我启动路径C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk
通过Process.Start
,但它失败The system cannot find the file specified
.
链接显示在a上dir
,因此它存在.
可以是权限吗?
笔记:
Start Menu
目录自动发现该路径.澄清:
代码如下:
public void Execute(){Process.Start(_shortcut.FullName);}
_shortcut的类型为FileInfo
另一方面,这似乎工作:
[Fact]
public void TestIisManager()
{
var path = new FileInfo(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\IIS Manager.lnk");
Process.Start(path.FullName);
}
Run Code Online (Sandbox Code Playgroud)
它似乎有点"基于环境".
第二个澄清:
我最近碰到了这个.基于Windows Forms的解决方案,VS2013,x64机器.Process.Start()无法通过.lnk文件启动应用程序.使用进程资源管理器,似乎.lnk文件中指定的目标无法正确解析为c:\ program files(x86)...而不是c:\ program files ...我遵循了Bruno的出色建议,但后来又是我的目标已被标记为"AnyCPU".
经过一番搔痒,结果发现VS11 +中有一个名为"Prefer 32-bit"的新编译器标志,默认情况下已经检查过.即使我的操作系统是64位且平台设置为AnyCPU,这也迫使EXE输出为32位.在取消选中并重新编译后,问题得到解决.
更多阅读:http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-means-as-of-net-45-and-visual-studio-11/
发现了这个问题.
WPF应用程序编译为x86(所有其他dll编译为AnyCPU),并且在64位计算机中启动某些可执行文件或链接时失败.
将"平台目标"更改为AnyCPU可以解决此问题.