在不知道确切路径的情况下在C#中启动外部程序

时间:2012-04-17 21:19:50

标签: c# .net launch process.start

我正在尝试创建一个C#程序来启动其他外部应用程序。我用Google搜索并发现:http://www.dotnetperls.com/process-start我认为这是一个非常好的教程。我唯一的问题是我不会总是知道程序的路径。

例如,如果我这样做:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "firefox.exe";
Process.Start(startInfo);

它成功启动了Firefox。但是,如果我这样做:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "chrome.exe";
Process.Start(startInfo);

它失败了,因为它无法找到chrome,看起来我需要从它的确切路径启动它。所以我的问题是有没有办法访问所有已安装应用程序的通用注册表并从那里启动?感谢。

3 个答案:

答案 0 :(得分:2)

当文件夹路径位于“PATH”环境变量中时,可以直接启动应用程序。

可以在以下位置查看和编辑此变量:

  1. 右键点击“计算机”
  2. 属性。
  3. 高级设置如果您使用的是“Windows7”或“Vista”
  4. 高级标签
  5. 环境变量
  6. 条目以;分隔。

    我认为你可以使用Firefox,因为Firefox已将其文件夹放入PATH。

答案 1 :(得分:1)

我知道这是一个老问题,但我认为我找到了解决方案。

看看下面的注册表项:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \

每个已安装的程序都有一个键。例如Chrome.exe。

参考: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx

答案 2 :(得分:0)

我认为您正在搜索Environment.GetEnvironmentVariable方法。 可以像这样使用它:

Environment.GetEnvironmentVariable("PATH")

,它将返回分配给该变量的字符串。

程序通常在该字符串中签名,以便能够通过Windows操作系统启动机制自动定位。

这意味着在情况下,您可能不知道可执行文件的路径,但必须知道要启动的程序的名称。