3
我正在創建一個程序,它首先檢查某個特定程序是否已安裝,是否安裝它繼續執行其他代碼,如果未安裝,則安裝該應用程序,然後繼續執行其他代碼。如何以編程方式獲取已安裝程序的列表
怎樣在VC編程檢查++應用程序已經被安裝或沒有
我正在創建一個程序,它首先檢查某個特定程序是否已安裝,是否安裝它繼續執行其他代碼,如果未安裝,則安裝該應用程序,然後繼續執行其他代碼。如何以編程方式獲取已安裝程序的列表
怎樣在VC編程檢查++應用程序已經被安裝或沒有
我有一個C#函數,它類似的東西,它看起來在32位,並在registry.I 64個項假設你正在尋找所需的程序的正確名稱是將其與關鍵的「DisplayName」相匹配。我懷疑你有問題,使它的C++ ......它會去像這樣
string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
bool found = false;
RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey);
foreach (string skName in rk.GetSubKeyNames())
{
RegistryKey sk = rk.OpenSubKey(skName);
if (sk.GetValue("DisplayName") != null &&
sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
{
//whatever you need to do with it
found = true;
break;
}
}
if(!found)
{
SoftwareKey = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
foreach (string skName in rk.GetSubKeyNames())
{
RegistryKey sk = rk.OpenSubKey(skName);
if (sk.GetValue("DisplayName") != null &&
sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
{
//whatever you need to do with it
found = true;
break;
}
}
}
我用這個方法也一樣,但我也跳過鍵與父母(因爲他們的服務包,系統更新等。)和Office多語言(MUI)包,因爲它們不顯示在添加/刪除程序中。 – jeffm 2010-05-24 14:06:43
哦,這是一個好主意,我實際上正在想辦法跳過這些,你怎麼知道一個條目是否有孩子? – irco 2010-05-24 15:34:34