2012-04-17 48 views
0

我試圖創建一個C#程序來啓動其他外部應用程序。我搜索了一下,發現這個:http://www.dotnetperls.com/process-start,我認爲這是一個很好的教程。我唯一的問題是我並不總是知道程序的路徑。在不知道確切路徑的情況下在C#中啓動外部程序

舉例來說,如果我這樣做:

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

,成功啓動Firefox瀏覽器。但是,如果我這樣做:

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

它失敗,因爲它找不到鉻,它看起來像我需要從其確切的路徑啓動它。所以我的問題是有沒有辦法訪問所有安裝的應用程序的通用註冊表並從那裏啓動?謝謝。

+0

沒有一個。並非所有程序都以傳統意義上的「安裝」。我建議您調查您計劃啓動的程序以查找其通用安裝位置。 – Venatu 2012-04-17 21:21:55

+0

您可以隨時在文件系統中搜索「chrome.exe」,一旦找到保存路徑供以後使用。 – Magnus 2012-04-17 21:22:58

+0

@Magnus:如果有多個「chrome.exe」? – 2012-04-17 21:23:33

回答

2

當文件夾路徑處於'PATH'環境變量中時,可以直接啓動應用程序。

這個變量可以查看和編輯中:

  1. 右鍵點擊 '計算機'
  2. 屬性。如果你使用 'Windows7的' 或 'Vista的'
  3. 高級標籤
  4. 環境變量

條目由;分離

  • 高級設置

    我認爲你可以稱讚Firefox,因爲Firefox已經把它的文件夾放到了PATH中。

  • +2

    如果他知道路徑(添加環境變量),他可能寧願將其添加到他的程序中。 – Magnus 2012-04-17 21:33:30

    +0

    但問題是一些程序或者一些安裝沒有註冊PATH。所以他需要知道在硬盤上很難找到一個假設的程序。 – 2012-04-17 21:36:19

    +0

    我認爲Venatu和Magnus是對的。沒有通用的註冊表來啓動,所以我應該只搜索exe文件。一旦找到它,我會提示用戶確認這確實是正確的路徑 – 2012-04-18 00:23:39

    0

    我認爲您正在尋找Environment.GetEnvironmentVariable方法。 可以使用這樣的:

    Environment.GetEnvironmentVariable("PATH")

    ,它將返回分配給該變量的字符串。

    程序通常自己在該字符串中籤名以便能夠通過Windows操作系統啓動機制自動定位。

    這意味着,在此情況你可能不知道的路徑到可執行文件,但必須知道程序啓動的名稱。

    相關問題