2016-04-08 23 views
0

'daki GUID'lerini kullanarak yüklü olup olmadığını nasıl anlarım. Ürün GUID'im var. Ve windows makinede yüklü olup olmadığını bilmek istiyorum ve eğer kurulu ise konum nedir. Ben szKey yanlış değer sağlayarak am mı Ürünün Install-Shield Komut Dosyası

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall 
{2D444666-5875-4B28-9ED8-15F750802BF5} 

altında

Ben GUID var: Şimdiye kadar bu

szKey= "\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{2D444666-5875-4B28-9ED8-15F750802BF5}"; 

if (RegDBKeyExist (szKey) < 0) then 

      MessageBox ("First call to RegDBKeyExist failed.", SEVERE); 

     else 

      SprintfBox (INFORMATION, TITLE_TEXT, "%s exists.", szKey); 

     endif; 

Not denedim?

cevap

1

Bu ürün 'Tüm Kullanıcılar'a yüklüyse, HKEY_LOCAL_MACHINE altında görünür. 'Yalnızca geçerli kullanıcıya' yüklenmişse, HKEY_CURRENT_USER altında görünecektir.
Bu nedenle, InstallShield'da bu testi iki kez tekrarlamanız gerekir, bunun gibi bir şey. Ayrıca, önde gelen ters eğik çizgiyi anahtar adından kaldırdığımı not alın.

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); 
szKey= "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{2D444666-5875-4B28-9ED8-15F750802BF5}"; 
if (RegDBKeyExist (szKey) < 0) then 
    RegDBSetDefaultRoot(HKEY_CURRENT_USER); 
    if (RegDBKeyExist (szKey) < 0) then 
     MessageBox ("call to RegDBKeyExist failed.", SEVERE); 
    else 
     SprintfBox (INFORMATION, TITLE_TEXT, "%s exists for current user.", szKey); 
    endif; 
else 
    SprintfBox (INFORMATION, TITLE_TEXT, "%s exists for all users.", szKey); 
endif;