我正在通过 Process.Start
启动路径 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk
,但是它失败并显示 系统找不到指定的文件
。
链接显示在 dir
中,因此它存在。
可以是权限吗?
注意事项:
- 路径是通过遍历
开始菜单
目录自动发现的。 - 我可以通过资源管理器和命令行启动它。
说明:
代码如下:
public void Execute() { Process.Start(_shortcut.FullName);
_shortcut 是 FileInfo 类型
- _shortcut.Exists为真,所以可以找到文件
- 将 _shortcut.FullName 替换为显式路径 @"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk"具有相同的效果。
- 这是一个使用 Caliburn 和 MEF 的 WPF 应用程序。
- 以管理员身份运行具有相同的效果。
另一方面,这在这里似乎有效:
[Fact]
public void TestIisManager()
{
var path = new FileInfo(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk");
Process.Start(path.FullName);
}
它似乎确实有点基于“环境”。
第二次澄清:
- 它似乎适用于 Windows 7 x86,但不适用于 Windows 7 x64。
最佳答案
我最近遇到了这个。基于 Windows 窗体的解决方案,VS2013,x64 机器。 Process.Start() 无法通过 .lnk 文件启动应用程序。使用 Process Explorer,似乎 .lnk 文件中指定的目标被错误地解析为 c:\program files (x86)... 而不是 c:\program files...目标已标记为“AnyCPU”。
经过一番摸索之后,发现 VS11+ 中有一个名为 “Prefer 32-bit” 的新编译器标志,默认情况下已选中。这迫使 EXE 输出为 32 位,即使我的操作系统是 64 位并且平台设置为 AnyCPU。取消勾选后重新编译,问题解决。
关于c# - Process.Start ("IIS Manager.lnk") 失败,返回 "The system cannot find the file specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193463/