2009-05-27 3 views
7

Sto cercando di ottenere la directory di installazione di un'applicazione dal registro di Windows (Google Sketchup in questo caso) con lo script Pascal di Inno Setup in modo da poter installare un plug-in.Come si ottiene un valore di registro in Inno Setup quando il valore utilizza solo il nome predefinito?

La chiave di registro non ha un nome, ha solo "(Predefinito)" in Regedit.

ho provato questo:

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

ma non restituisce un valore. Eventuali suggerimenti?

risposta

14

Basta lasciare il SubKeyName vuoto, in questo modo:

[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; 

La documentazione di corrispondenza per la chiamata API sottostante è per RegQueryValueEx(), in cui si afferma:

Il nome del valore del Registro.

Se lVValueName è NULL o una stringa vuota, "", la funzione recupera il tipo e i dati per il valore senza nome o predefinito della chiave, se presente.

+0

Grazie mille. Funziona abbastanza bene. – kraryal

+0

È il 'ValueName', non il' SubKeyName' che deve essere vuoto. – Maxence