2010-12-13 18 views
8

I stworzył instalację z Inno Setup i chciał kwerendy rejestru używając Pascal ScriptInno RegKeyExists Setup na 64-bitowych systemach

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

Moja konfiguracja jest 32bit (jak mój program chcę zainstalować), ale na Systemy 64-bitowe, zapytanie jest przekierowywane do HKCR\Wow6432Node\\Installer\UpgradeCodes

Oczywiście klucz nie zostaje znaleziony, mimo że istnieje. Jak mogę wykryć klucz, mimo że moja konfiguracja pozostaje 32-bitowa?

Odpowiedz

21

Wymyśliłem to. Można utworzyć funkcję pomocnika takiego w swoim skrypcie:

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

Potem go używać jak np .:

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

dziękuje za odpowiedzi. –

+0

Dziękuję .... Walczyłem z tym przez wiele godzin –

+1

Jak deklarujesz ** Klucz **? Jaki to typ? Właśnie dostaję błąd niedopasowania typu. – NickG

Powiązane problemy