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

本文关键字:启动 外部 程序 不知道 路径 情况下 | 更新日期: 2023-09-27 18:31:37

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

例如,如果我这样做:

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

它成功启动了火狐浏览器。 但是,如果我这样做:

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

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

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

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

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

  1. 右键单击"计算机"
  2. 性能。
  3. 高级设置(如果您使用的是"Windows7"或"Vista")
  4. "高级"选项卡
  5. 环境变量

条目用 ; 分隔。

我认为你可以选择Firefox,因为Firefox已经将其文件夹放入PATH中。

我知道

这是一个老问题,但我想我已经找到了解决方案。

看看下面的注册表项:

HKEY_LOCAL_MACHINE''软件''Microsoft''Windows''当前版本''应用程序路径''

每个已安装的程序都有一个密钥。例如.exe铬。

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

我想你正在搜索Environment.GetEnvironmentVariable方法。可以这样使用它:

Environment.GetEnvironmentVariable("PATH")

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

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

这意味着在这种情况下,

您可能不知道可执行文件的路径,但必须知道要启动的程序的名称。