Process.Start() 对 *.jpg 文件失败
Process.Start() fails for *.jpg-Files
我使用以下代码打开 jpg
-files:
var file = @"C:\Users\administrator.ADSALL4SPS\Desktop\IMG_4121.JPG";
var processStartInfo = new ProcessStartInfo { Verb = "open", FileName = file };
var workDir = Path.GetDirectoryName(file);
if (!string.IsNullOrEmpty(workDir)) {
processStartInfo.WorkingDirectory = workDir;
}
try {
Process.Start(processStartInfo);
} catch (Exception e) {
// Errorhandling
}
现在,当我这样做时,我总是得到一个带有 NativeErrorCode = ERR_NO_ASSOCIATION
的 Win32Exception
但是扩展 *.jpg
与 MSPaint 相关联。
当我双击文件时,文件在 MSPaint 中打开。
为什么连文件都关联了Win32Exception
?
试试这个:
string file = @"C:\Users\administrator.ADSALL4SPS\Desktop\IMG_4121.JPG";
System.Diagnostics.Process.Start(file);
因为您想使用默认 windows 应用程序打开此文件,您需要使用 System.Diagnostics.Process.Start
使用默认应用程序打开文件。
JPG 扩展名可能没有为其注册显式 open 动词,在这种情况下您可以省略它并且基础 ShellExecute
函数将使用第一个注册动词(在您的情况下,可能是 edit):
var processStartInfo = new ProcessStartInfo { FileName = file };
ProcessStartInfo.Verbs
属性 包含给定文件名的所有注册动词。
我使用以下代码打开 jpg
-files:
var file = @"C:\Users\administrator.ADSALL4SPS\Desktop\IMG_4121.JPG";
var processStartInfo = new ProcessStartInfo { Verb = "open", FileName = file };
var workDir = Path.GetDirectoryName(file);
if (!string.IsNullOrEmpty(workDir)) {
processStartInfo.WorkingDirectory = workDir;
}
try {
Process.Start(processStartInfo);
} catch (Exception e) {
// Errorhandling
}
现在,当我这样做时,我总是得到一个带有 NativeErrorCode = ERR_NO_ASSOCIATION
但是扩展 *.jpg
与 MSPaint 相关联。
当我双击文件时,文件在 MSPaint 中打开。
为什么连文件都关联了Win32Exception
?
试试这个:
string file = @"C:\Users\administrator.ADSALL4SPS\Desktop\IMG_4121.JPG";
System.Diagnostics.Process.Start(file);
因为您想使用默认 windows 应用程序打开此文件,您需要使用 System.Diagnostics.Process.Start
使用默认应用程序打开文件。
JPG 扩展名可能没有为其注册显式 open 动词,在这种情况下您可以省略它并且基础 ShellExecute
函数将使用第一个注册动词(在您的情况下,可能是 edit):
var processStartInfo = new ProcessStartInfo { FileName = file };
ProcessStartInfo.Verbs
属性 包含给定文件名的所有注册动词。