Bonjour,


J'ai écrit une procédure qui lit une clef de registre et vérifie si la valeur est juste.
Les paramètres passées sont :
Param[1]: le Root (=HKEY_LOCAL_MACHINE)
Param[2]: le chemin de la clef (='SOTFWARE\Microsoft\Windows\CurrentVersion')
Param[3]: le nom de la valeur (='RegDone')
Param[4]: le type (='String')
Param[5]: la valeur (='1')


Le problème c'est que la ligne reg.Openkey ne passe pas, il renvoie false et zappe les conditions if, etc...
J'ai même essayé avec le paramètre true (créé la clef si existe pas)
Ça ne passe pas plus.
Avez-vous une idée de ce qui se passe?
C'est comme si je ne pouvais pas accéder à ma BdR...


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//créé la clef
        Reg:=TRegistry.Create;
        //définit la clef principale
        Reg.RootKey:=StrToHKEY(Param[1]);
        //ouvre la clef
        if Reg.OpenKey(Param[2],True) then
          //prend la valeur et compare
          if Reg.ValueExists(Param[3]) then
            if (Param[4]='Int') or (Param[4]='DWord') then
              if Reg.ReadInteger(Param[3])=StrToInt(Param[5]) then
                  Etat[Num]:=1
              else
                if Param[4]='Str' then
                  if Reg.ReadString(Param[3])=Param[5] then
                    Etat[Num]:=1;
        //ferme la clef
        Reg.CloseKey;
        //libère la variable
        Reg.Free;