2010-12-13 101 views
8

J'ai créé une configuration avec Inno Setup et je voulais interroger le registre à l'aide de script PascalInno Setup RegKeyExists sur les systèmes 64 bits

if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then 

Ma configuration est 32bit (comme mon logiciel, je veux installer), mais Systèmes 64 bits, la requête est redirigée vers HKCR\Wow6432Node\\Installer\UpgradeCodes

Bien sûr, la clé n'est pas trouvée, même si elle est là. Comment puis-je détecter la clé même si ma configuration reste 32 bits?

Répondre

21

Je l'ai compris. Vous pouvez faire une fonction d'assistance comme celui-ci dans votre script:

function GetHKLM: Integer; 
begin 
    if IsWin64 then 
    Result := HKLM64 
    else 
    Result := HKLM32; 
end; 

Ensuite, vous l'utiliser comme

.: par exemple
RegQueryStringValue(
    GetHKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'XYZ', Variable); 
+0

Merci d'avoir répondu à vous. –

+0

Merci ... Je me suis battu pendant des heures –

+1

Comment déclarez-vous ** Clé **? Quel type est-ce? Je viens d'obtenir une erreur de type incompatibilité. – NickG