[Dev-cpp] Problème d'ouverture de clé de registre

Résolu
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 18 mai 2005 à 13:44
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 18 mai 2005 à 16:47
J'essaie d'ouvrir une clé de registre comme ceci :
HKEY runKeyBase = HKEY_LOCAL_MACHINE;

LPCTSTR runKeyPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";

PHKEY runKeyHandle = 0;

REGSAM runKeyAccess = KEY_ALL_ACCESS;

DWORD runKeyReserved = 0;

LONG regError = 0;

regError = RegOpenKeyEx(runKeyBase, runKeyPath, runKeyReserved, runKeyAccess, runKeyHandle);



Mais ça marche pas , regError ne retourne pas ERROR_SUCCESS (0) et runKeyHandle = 0.

7 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
18 mai 2005 à 16:24
Salut,
Tu as regardé l'exemple que j'ai donné plus haut ??
Il faut déclarer un HKEY et le passer par addresse (&).
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
18 mai 2005 à 14:14
Salut,
Le dernier param est un pointeur sur un HKEY qui existe, il ne faut pas passer un pointeur NULL comme tu le fais.

HKEY Key;
...
RegOpenKeyEx(..., &Key);

Sinon tu peux appeler GetLastError() pour avoir le numéro de l'erreur.
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 14:57
Le dernier paramètre n'est pas vraiment un paramètre mais est utilisé
comme valeur de retour : il contient (normalement) le handle de la clé
ouverte. Or, là, runKeyHandle = 0, même après l'appel de l'API. (Note :
ce paramètre est passé par référence).

De plus, l'API retourne déja un numéro d'erreur. Pour information, après appel de l'API, regError = 1.








0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
18 mai 2005 à 16:02
Salut,
Oui c'est une valeur de retour, c'est pour ca qu'il faut passer un pointeur, pour que l'api sache ou mettre la valeur de retour.
Toi tu met un pointeur NULL, c'est comme si tu faisais RegOpenKeyEx(..., 0);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 16:04
Comment passer le pointeur a la place de la variable ?
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 16:07
Le compilateur n'accepte pas * ou & devant le nom.

0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
18 mai 2005 à 16:47
Ok, ca marche.

Merci.

0
Rejoignez-nous