2009-05-27 14 views
7

Próbuję pobrać katalog instalacyjny aplikacji z rejestru Windows (w tym przypadku Google Sketchup) za pomocą skryptu Pascal Inno Setup, aby zainstalować tam wtyczkę.Jak uzyskać wartość rejestru w programie Inno Setup, gdy wartość używa tylko nazwy domyślnej?

Klucz rejestru nie ma nazwy, po prostu ma wartość "(domyślnie)" w Regedit.

Próbowałem to:

RegQueryStringValue(HKLM, 'SOFTWARE\Google\Google Sketchup 6', '(Default)', pluginLoc); 

ale nie zwraca wartości. Jakieś sugestie?

Odpowiedz

14

prostu zostawić SubKeyName pusta, tak jak poniżej:

[Code] 
function InitializeSetup(): Boolean; 
var 
    V: string; 
begin 
    if RegQueryStringValue(HKLM, 'SOFTWARE\Google\Google Sketchup 6', '', V) then 
    MsgBox('Value is "' + V + '"', mbInformation, MB_OK); 
    Result := TRUE; 
end; 

Dokumentacja dopasowanie do bazowego wywołanie API jest dla RegQueryValueEx(), który stanowi:

Nazwa wartości rejestru.

Jeśli lpValueName ma wartość NULL lub pusty ciąg, "", funkcja pobiera typ i dane dla nienazwanej lub domyślnej wartości klucza, jeśli jest.

+0

Dziękuję bardzo. Działa całkiem nieźle. – kraryal

+0

Jest to 'ValueName', a nie' SubKeyName', które musi być puste. – Maxence