0

我正在尝试创建一个 C# 程序来启动其他外部应用程序。我搜索了一下,发现了这个: 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,看起来我需要从它的确切路径启动它。所以我的问题是有没有办法访问所有已安装应用程序的通用注册表并从那里启动?谢谢。

4

3 回答 3

3

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

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

  1. 右键单击“计算机”
  2. 特性。
  3. 如果您使用的是“Windows7”或“Vista”,请进行高级设置
  4. 高级选项卡
  5. 环境变量

条目由 分隔;

我认为您可以启动 Firefox,因为 Firefox 已经将其文件夹放入 PATH 中。

于 2012-04-17T21:26:15.160 回答
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

于 2012-10-05T08:53:10.660 回答
0

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

Environment.GetEnvironmentVariable("PATH")

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

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

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

于 2012-04-17T21:22:45.740 回答