2013-03-12 148 views
1

我正在制作一个C#程序,我需要找到安装在计算机上的一些软件的安装路径。 我需要处理的是,我有本程序的名称(例如Google Chrome),我有进程名称(例如Chrome.exe)。 我现在需要的是Chrome.exe的路径。如果我要传递程序名称或进程名称作为搜索参数,如何使用C#查找路径? 其实我想做一个自定义的动作,它会找到chrome.exe并调用一个链接。 之后,我将使用搜索chrome.exe的路径,并且我想通过chrome默认打开一个网站。我该怎么办..?如何知道exe的安装路径?

+0

你到目前为止尝试过什么吗?请阅读[常见问题]和[问] – 2013-03-12 06:41:53

+0

有一个文件搜索器[这里](http://www.codeproject.com/Articles/35044/File-Searcher-in-C) – Marshal 2013-03-12 07:16:54

+1

为什么不只是打开URL和让用户的操作系统决定哪个浏览器是默认的? – CodeCaster 2013-03-12 07:51:54

回答

4

另一种选择要考虑的是刚刚推出采用Process.Start()并让操作系统使用默认浏览器打开该链接的链接。这可能会更符合用户的期望。

在WiX工具箱中,您可以使用WixUtilExtensionShellExecute standard custom action免费获得该行为。

+0

是的,罗布。这是非常好的方式。但是我只能在谷歌浏览器中使用我的应用程序。所以在启动时有很多检查和条件。所以对我而言,自定义操作是更好的选择。 – Anudeep 2013-03-13 07:15:47

1

你可以尝试这样的事情

public string GetProcessPath(string name) 
{ 
Process[] processes = Process.GetProcessesByName(name); 

if (processes.Length > 0) 
{ 
    return processes[0].MainModule.FileName; 
} 
else 
{ 
    return string.Empty; 
} 
} 

,或者您可以使用Linq

or you could do what you do but use linq 

    Process element = (from p in Process.GetProcesses() 
       where p.ProcessName == "Chrome.exe" 
       select p).FirstOrDefault(); 

但是有可以与多个同名的过程。所以,你必须进一步修改根据你的代码需求。

希望这有助于