2013-03-12 163 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(); 

但是有可以與多個同名的過程。所以,你必須進一步修改根據你的代碼需求。

希望這有助於