2016-04-08 32 views
0

我有一個產品GUID。我想知道它是否安裝在Windows機器中,如果安裝了,那麼位置是什麼。如何通過在安裝屏蔽腳本中使用其GUID來查找產品是否已安裝

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

我有GUID是我到szKey提供錯誤的值:到目前爲止我已經試過這

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; 

注意事項?

回答

1

如果該產品已安裝到「所有用戶」,它將顯示在HKEY_LOCAL_MACHINE下。如果它安裝爲「僅限當前用戶」,它將顯示在HKEY_CURRENT_USER下。
因此,在InstallShield中,您需要重複這個測試兩次,像這樣。另外,請注意我刪除了密鑰名稱中的前導反斜槓。

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; 
相關問題