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

在不知道确切路径的情况下用C#启动外部程序,c#,.net,launch,process.start,C#,.net,Launch,Process.start,我正在尝试创建一个C#程序来启动其他外部应用程序。我搜索了一下,发现了这个:我认为这是一个非常好的教程。我唯一的问题是我并不总是知道程序的路径 例如,如果我这样做: ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "firefox.exe"; Process.Start(startInfo); ProcessStartInfo startInfo = new ProcessStartInfo()

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

例如,如果我这样做:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "firefox.exe";
Process.Start(startInfo);
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "chrome.exe";
Process.Start(startInfo);
它成功地启动了firefox。但是,如果我这样做:

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

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

我想你正在寻找方法。 您可以这样使用它:

Environment.GetEnvironmentVariable(“路径”)

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

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


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

我想您正在搜索方法。 您可以这样使用它:

Environment.GetEnvironmentVariable(“路径”)

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

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


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

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

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

  • 右键单击“计算机”
  • 财产
  • 使用“Windows7”或“Vista”时的高级设置
  • 预付款选项卡
  • 环境变量
  • 条目之间用
    分隔


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

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

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

  • 右键单击“计算机”
  • 财产
  • 使用“Windows7”或“Vista”时的高级设置
  • 预付款选项卡
  • 环境变量
  • 条目之间用
    分隔


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

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

    请查看以下注册表项:

    HKEY\ U本地\计算机\软件\ Microsoft\Windows\CurrentVersion\App路径\

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

    参考:
    我知道这是一个老问题,但我想我已经找到了解决办法

    请查看以下注册表项:

    HKEY\ U本地\计算机\软件\ Microsoft\Windows\CurrentVersion\App路径\

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

    参考:

    没有。并非所有程序都是传统意义上的“安装”。我建议您调查您计划启动的程序,以找到它们的常用安装位置。您可以在文件系统中搜索“chrome.exe”,找到后保存路径以备以后使用。@Magnus:如果有多个“chrome.exe”?则没有。并非所有程序都是传统意义上的“安装”。我建议您调查您计划启动的程序,以找到它们的常用安装位置。您可以在文件系统中搜索“chrome.exe”,一旦找到,请保存路径供以后使用。@Magnus:如果有多个“chrome.exe”?如果他知道路径(添加环境变量)他可能更愿意将它添加到他的程序中。但问题是某些程序或某些安装没有注册路径。所以他需要知道在硬盘上很难找到一个虚拟程序。我认为Ventau和Magnus是对的。没有可以启动的通用注册表,所以我应该只搜索exe文件。一旦我找到它,我只会提示用户验证这确实是正确的路径如果你不介意启动哪种浏览器,你可以使用网页的url,如“”,作为startInfoI的文件名。我想一定有办法做到这一点。内置命令行程序“start”如何知道在哪里查找?如果打开命令行并写入
    start chrome
    start firefox
    chrome或firefox将启动,而无需我指定路径或将其添加到任何环境变量中。。。(至少在我的电脑上)如果他知道路径(添加环境变量),他可能更愿意将其添加到他的程序中。但问题是某些程序或某些安装没有注册路径。所以他需要知道在硬盘上很难找到一个虚拟程序。我认为Ventau和Magnus是对的。没有可以启动的通用注册表,所以我应该只搜索exe文件。一旦我找到它,我只会提示用户验证这确实是正确的路径如果你不介意启动哪种浏览器,你可以使用网页的url,如“”,作为startInfoI的文件名。我想一定有办法做到这一点。内置命令行程序“start”如何知道在哪里查找?如果打开命令行并写入
    start chrome
    start firefox
    chrome或firefox将启动,而无需我指定路径或将其添加到任何环境变量中。。。(至少在我的电脑上)