2010-10-12 116 views
8

我想知道應用程序的安裝路徑在哪裏。我知道它通常位於... \ Program Files文件中......但我想有些人會將它安裝在不同的位置。我知道應用程序的名稱。如何以編程方式獲取其他應用程序的安裝路徑?

謝謝。

+0

的可能重複[確定第三方應用程序安裝目錄(http://stackoverflow.com/questions/1309142/determine-3rd-party-application-installation-directory) – 2010-10-12 16:14:21

回答

12

找到程序的安裝路徑(在Windows上)的理想方法是從註冊表中讀取它。大多數安裝程序將爲該程序創建一個包含安裝路徑的註冊表項。確切地說,這個關鍵是什麼以及它的命名取決於所討論的程序。

要查找程序是否在註冊表中有密鑰,請打開'regedit'並使用編輯>查找選項來嘗試找到程序名的密鑰。如果存在這樣的密鑰,則可以使用.NET Framework庫中的RegistryKey類讀取它。

如果程序沒有註冊表項,那麼另一個選項就是要求用戶使用OpenFileDialog來定位.exe文件,雖然這顯然不是很理想。

10

許多(大多數?)程序創建一個App Paths註冊表項。看看

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 
4

如果你知道有問題的應用程序(相對於任何應用程序)的註冊表項是可能是最好的選擇(如果存在的話)。

的安裝可能會放在自己的自定義「安裝路徑鍵」的地方(這樣做的發現爲法拉提到的),或者它可能是在安裝的程序卸載部分,所以你可以檢查:

  • HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \卸載

但要注意的任何新版本的安裝可以改變它寫出,無論對於自定義鍵或卸載對應的鍵。因此,檢查註冊表可能只適用於已知的安裝\版本。

TEP

0

您可以使用MSI(我寫了一個C#包裝器在這裏https://github.com/alialavia/MSINet)。下面是一個簡單的例子:

var location = ""; 
foreach (var p in InstalledProduct.Enumerate()) 
{ 
    try 
    { 
     if (p.InstalledProductName.Contains("AppName"))      
     { 
      location = p.InstallLocation; 
      break; 
     } 
    } 
    catch { } 
} 
相關問題