【发布时间】:2012-04-27 18:50:03
【问题描述】:
我想寻求有关从 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 表示尝试打开的文件的完整路径。现在,除了 (jpg) 带有 ACDSee 应用程序 的图像之外,一切都运行良好。 Irfanview 协会运作良好,MS 办公文件也很好。尝试打开与 acdsee 关联的 jpg 图像后,它只会在通知区域中运行 acdsee,而不会打开文件。
我发现,在 *.jpg 图像的注册表 CLASSES_ROOT 中,有一个 ACDSee.JPG 值作为关联的应用程序,并且在此键下有在 shell->Open ->命令路径:
"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde
我觉得这个奇怪的/dde 是我无法打开文件的原因。我意识到在同一个 reg 键 shell->Open 中有一些 DDEExec 键条目,其值为 [open("%1")]
对于 Irfan 视图或其他检查的应用程序,没有 ddeexec,只有普通命令,如
"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"
可以在将 %1 换成文件名 后从命令行运行,但我无法从命令行中的 acdsee 条目运行该命令 :(
所以我的问题是,我如何设置ProcessStartInfo 对象以确保它将运行所有文件,就像在资源管理器中通过双击、标准和这个@987654330 一样@ 那些?还有其他类似DDEExec 的东西我应该注意吗?
感谢和抱歉我的英文
更新:因为这个问题仍然得到赞成,我想澄清接受的答案有效。我只对旧版本的 ACDSee 有问题,而不是 Process.Start 命令或 jpg 扩展名。
【问题讨论】:
标签: c# process file-association