2009-05-27 12 views
7

J'essaie d'obtenir le répertoire d'installation d'une application à partir du registre de Windows (Google Sketchup dans ce cas) avec le script Pascal d'Inno Setup afin que je puisse y installer un plugin.Comment puis-je obtenir une valeur de registre dans Inno Setup lorsque la valeur utilise uniquement le nom par défaut?

La clé de registre n'a pas de nom, elle a simplement "(Default)" dans Regedit.

J'ai essayé ceci:

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

mais il ne retourne pas de valeur. Aucune suggestion?

Répondre

14

il suffit de laisser le SubKeyName vide, comme ceci:

[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 documentation correspondante pour l'appel API sous-jacente est RegQueryValueEx(), qui stipule:

Le nom de la valeur de Registre.

Si lpValueName est NULL ou une chaîne vide, "", la fonction récupère le type et les données de la valeur sans nom ou par défaut de la clé, le cas échéant.

+0

Merci beaucoup. Cela fonctionne très bien. – kraryal

+0

C'est le 'ValueName', pas le' SubKeyName' qui doit être vide. – Maxence