因此,我編寫了這個安裝程序腳本,可以在目標機器上自動安裝多個不同的產品。有一次,我正在檢查機器(Windows 7)是否安裝了Microsoft Security Essentials - 如果沒有,我安裝該程序。下面的代碼是用C#編寫的,但問題也可能適用於其他語言。檢查計算機上是否安裝了Microsoft Security Essentials
一些事實,以協助那些應答:
- MSE是在64位機器上的64位和32位機器32位(有兩個不同的安裝程序)因此,在該路徑註冊表總是:SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall。
- 自動安裝的過程以管理員身份運行。我能夠在同一個目錄中看到其他程序的鍵。
我在註冊表編輯器視圖:
我的方法:
private static bool DoesMseExist()
{
string location = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(location))
{
foreach (string subKey in rk.GetSubKeyNames())
{
using (RegistryKey productKey = rk.OpenSubKey(subKey))
{
if (productKey != null)
{
if (Convert.ToString(productKey.GetValue("DisplayName"))
.Contains("Microsoft Security Client"))
{
return true;
}
}
}
}
}
return false;
}
這從來沒有發現的關鍵。任何協助發現爲什麼將不勝感激。
目前我正在使用以下內容作爲替代。
string MseLocation = @"C:\Program Files\Microsoft Security Client\msseces.exe";
return (File.Exists(MseLocation));
您是否爲x86平臺編譯應用程序? – Steve
不應該'字符串位置'使用'@'以及? –
它的確如此。實際的代碼使用一個常量。我會解決它。 –