Process.Start()对* .jpg-Files失败

时间:2015-02-02 20:20:17

标签: c# .net windows process process.start

我使用以下代码打开jpg - 文件:

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相关联?

2 个答案:

答案 0 :(得分:4)

JPG扩展程序可能没有为其注册明确的 open 动词,在这种情况下,您可以省略它并且基础ShellExecute函数将使用第一个注册的动词(在您的情况下,可能是 编辑 ):

    var processStartInfo = new ProcessStartInfo { FileName = file };

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

答案 1 :(得分:1)

试试这个:

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

因为您要使用默认的Windows应用程序打开此文件,您需要使用System.Diagnostics.Process.Start打开包含默认应用程序的文件。