我想知道應用程序的安裝路徑在哪裏。我知道它通常位於... \ Program Files文件中......但我想有些人會將它安裝在不同的位置。我知道應用程序的名稱。如何以編程方式獲取其他應用程序的安裝路徑?
謝謝。
我想知道應用程序的安裝路徑在哪裏。我知道它通常位於... \ Program Files文件中......但我想有些人會將它安裝在不同的位置。我知道應用程序的名稱。如何以編程方式獲取其他應用程序的安裝路徑?
謝謝。
找到程序的安裝路徑(在Windows上)的理想方法是從註冊表中讀取它。大多數安裝程序將爲該程序創建一個包含安裝路徑的註冊表項。確切地說,這個關鍵是什麼以及它的命名取決於所討論的程序。
要查找程序是否在註冊表中有密鑰,請打開'regedit'並使用編輯>查找選項來嘗試找到程序名的密鑰。如果存在這樣的密鑰,則可以使用.NET Framework庫中的RegistryKey類讀取它。
如果程序沒有註冊表項,那麼另一個選項就是要求用戶使用OpenFileDialog來定位.exe文件,雖然這顯然不是很理想。
許多(大多數?)程序創建一個App Paths
註冊表項。看看
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
如果你知道有問題的應用程序(相對於任何應用程序)的註冊表項是可能是最好的選擇(如果存在的話)。
的安裝可能會放在自己的自定義「安裝路徑鍵」的地方(這樣做的發現爲法拉提到的),或者它可能是在安裝的程序卸載部分,所以你可以檢查:
但要注意的任何新版本的安裝可以改變它寫出,無論對於自定義鍵或卸載對應的鍵。因此,檢查註冊表可能只適用於已知的安裝\版本。
TEP
最好的方法是使用安裝程序API來找到該程序的位置。 你可以寫一個託管包裝過的API
搜索MsiGetProductInfo
參考:http://msdn.microsoft.com/en-us/library/aa369558(VS.85).aspx
您可以使用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 { }
}
的可能重複[確定第三方應用程序安裝目錄(http://stackoverflow.com/questions/1309142/determine-3rd-party-application-installation-directory) – 2010-10-12 16:14:21