Registre windows - Aidez moi!!

Résolu
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009 - 1 déc. 2006 à 03:47
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 1 déc. 2006 à 08:51
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

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
1 déc. 2006 à 08:51
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
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 déc. 2006 à 03:57
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++ (@++)<!--
0
Rejoignez-nous