2016-04-08 17 views
0

私は製品GUIDを持っています。そして、私はそれがWindowsマシンにインストールされているかどうか、インストールされている場合は、場所は何かを知りたいです。今まで私はこのInstall-shieldスクリプトでGUIDを使用して製品がインストールされているかどうかを確認する方法

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; 

は注意しようとしました:私は

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

下GUIDを持って

を私はszKeyに間違った価値を提供していますか?

答えて

1

この製品が「すべてのユーザー」にインストールされている場合は、HKEY_LOCAL_MACHINEの下に表示されます。 「現在のユーザーのみ」にインストールされている場合は、HKEY_CURRENT_USERの下に表示されます。
InstallShieldでは、このようなテストを2回繰り返す必要があります。また、キー名から先行するバックスラッシュを削除しました。

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; 
関連する問題