Process.Start()失败的* .jpg文件

我使用下面的代码来打开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甚至文件关联?

JPG扩展名可能没有明确的开放式动词注册,在这种情况下,您可以省略它,底层ShellExecute函数将使用第一个注册的动词(在您的情况下,可能会被编辑 ):

  var processStartInfo = new ProcessStartInfo { FileName = file }; 

ProcessStartInfo.Verbs属性包含给定文件名的所有已注册动词。

尝试这个 :

  string file = @"C:\Users\administrator.ADSALL4SPS\Desktop\IMG_4121.JPG"; System.Diagnostics.Process.Start(file); 

因为您想使用默认的Windows应用程序打开这个文件,所以您需要使用System.Diagnostics.Process.Start以默认应用程序打开文件。