Registre windows - Aidez moi!! [Résolu]

Signaler
Messages postés
151
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
15 avril 2009
-
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
-
Salut tlm,
jai un gros probleme.

Jai WinXP 64bits d'installer chez moi.
Avec Visual c++, j'essais daller chercher la valeur d'un clé du registre ouverte. (le hanlde de la clé est bon).

Voici mon code:
------------------------------------
 HKEY KeyHandle = 0;
 CConversion* pConversion = new CConversion;
 LPCTSTR lpTempVar = pConversion->pCharToLPCTSTR(SubKey);

 long KeyOK = RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpTempVar,0,KEY_ALL_ACCESS,&KeyHandle);
 if(KeyOK != ERROR_SUCCESS)
  return -1;

 lpTempVar = pConversion->pCharToLPCTSTR(ValueName); //On ré-utilise la meme variable, économie de mémoire
 DWORD valueType = NULL;//le buffer qui recevera le type de la clé ouverte
 DWORD buffLenght = NULL;    

 KeyOK = RegQueryValueEx(KeyHandle,lpTempVar,NULL,&valueType,(LPBYTE)buffer1,&buffLenght);
 if(KeyOK!=ERROR_SUCCESS)
  return 0;

 return 1;
 ----------------------------------------
Aucune erreur de compilation, la premiere fonction 'regopenkeyEx' marche tres bien, elle me renvois ERROR_SUCCESS ;),
mais pour une raison inconnue, RegQueryValueEx ne renvois jamais ERROR_SUCCESS...

SVP AIDEZ MOI ! Il faut que RegQueryValueEx marche...:(

Pepsidrinker

2 réponses

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
un premier appel permet de connaître la taille du buffer nécessaire si on ne connait pas le type de la clé; ensuite un deuxième appel permet de prendre la valeur en ayant alloué la variable

louis14
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Bien d'après MSDN, le dernier paramètre de RegQueryValueEx est un pointeur vers une variable contenant la taille du buffer entré dans le paramètre précédent. Il contiendra par la suite le total d'octets écrit dans ce même buffer.

En gros, buffLenght devrait contenir la taille de buffer1 en octet. Après la fonction, il contiendra le total d'octet écrit dans buffer1.

C++ (@++)<!--