我想寻求有关从 c# 应用程序和关联应用程序打开文件的帮助。我试过这个:
ProcessStartInfo pi = new ProcessStartInfo(file);
pi.Arguments = Path.GetFileName(file);
pi.UseShellExecute = true;
pi.WorkingDirectory = Path.GetDirectoryName(file);
pi.FileName = file;
pi.Verb = "OPEN";
Process.Start(pi);
或这个:
Process.Start(file);
其中两个示例中的字符串file
都表示尝试打开的文件的完整路径。现在,一切都运行良好,除了带有 ACDSee 应用程序的 (jpg) 图像。Irfanview 协会运作良好,MS 办公文件也很好。在尝试打开与 acdsee 关联的 jpg 图像后,它只会在通知区域中运行 acdsee 而不会打开文件。
我发现,在 *.jpg 图像的注册表CLASSES_ROOT中,有一个 ACDSee.JPG 值作为关联的应用程序,并且在这个键下,在 shell- >Open->Command中有一个路径:
"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde
我觉得这很奇怪,这/dde
就是为什么我无法打开文件的原因。我意识到在同一个 reg key shell->Open中有一些DDEExec
带有值的键条目[open("%1")]
对于 Irfan 视图或其他检查的应用程序,没有 ddeexec,只有普通命令,如
"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"
可以在将 %1 交换为文件名后从命令行运行,但我无法从命令行中的 acdsee 条目运行命令:(
所以我的问题是,我如何设置ProcessStartInfo
对象以确保它通过双击运行所有文件,就像它在资源管理器中一样,标准和这个DDEExec
?还有其他类似DDEExec
的事情我应该注意吗?谢谢和对不起我的英文
更新:因为这个问题仍然得到赞成,我想澄清接受的答案是有效的。我只对旧版本的 ACDSee 有问题,而对Process.Start
命令或jpg
扩展名没有问题。