【发布时间】:2010-11-16 11:02:46
【问题描述】:
我正在通过Process.Start 启动路径C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk,但使用The system cannot find the file specified 失败。
链接显示在dir 上,因此它存在。
可以是权限吗?
注意事项:
- 通过遍历
Start Menu目录自动发现路径。 - 我可以通过资源管理器和命令行启动它。
说明:
-
代码如下:
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。
【问题讨论】:
-
它对我有用,所以我认为这是您的环境的问题。您是否使用
Process.Start()的其他选项?您是否使用完整路径?您是否以其他用户的身份运行您的应用? -
这对我来说很好用。让我们看看你调用
Process.Start()的代码部分。 -
您可以使用 Sysinternals 的 Process Monitor 找出您的进程实际在哪里寻找该文件。