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

Signaler
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
-
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
-
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

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Tu as regardé l'exemple que j'ai donné plus haut ??
Il faut déclarer un HKEY et le passer par addresse (&).
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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.
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
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.








Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
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);
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Comment passer le pointeur a la place de la variable ?
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Le compilateur n'accepte pas * ou & devant le nom.

Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Ok, ca marche.

Merci.