begin process at 2010 09 04 18:16:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PDA

 > 

Divers

 > 

Compilateurs

 > 

Problème avec la fonction RegQueryValueEx... en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec la fonction RegQueryValueEx... en C

jeudi 5 juin 2008 à 16:39:32 | Problème avec la fonction RegQueryValueEx... en C

julow

Bonjour!

J'ai tenté d'utiliser la fonction RegQueryValueEx afin de récupérer la donnée d'une clés dans la base de registre Windows mais malgrès tout ce que j'ai trouvé comme information (y compris le site MSDN) je n'arrive pas à l'utiliser correctement!

La donnée que je veux récupérer doit ensuite être comparée à une autre que je fournis et si la donnée extraite de la base de registre ne correspond pas à celle que je donne alors je la remplace par la nouvelle (je vérifie en fait que la donnée soit bien à jour et si elle ne l'est pas je fais la mise à jour par un RegSetValueEx).

Voici la partie de mon code concernée par le problème :

char data[64], datatest[MAX_PATH] = ""; //data est la valeur que je renseigne et datatest est la donnée de la clés qui sera mise à jour si elle ne correspond pas à data
DWORD datatestsize;
HKEY valeur;
LPCTSTR subkey; //contient la subkey que je renseigne ailleur

RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT(subkey), 0, KEY_SET_VALUE, &valeur);
RegQueryValueEx (valeur, TEXT(valuename), 0, 0, (BYTE*)datatest, &datatestsize);
printf("Longueur de data       :  %i\n", strlen(data));
printf("Longueur de datatest   :  %i\n", strlen(datatest));
printf("Donnee de datatest     :  %s\n", &datatest);

La valeur de datatest récupérée est toujours NULL (donc "") et sa taille est donc de 0 alors que cela n'est pas le cas!

Mon compilateur ne me rapporte pas de warning ni d'erreurs donc je ne voit pas ce qui cloche!

Help s'il vous plait!!
mercredi 15 juillet 2009 à 15:25:48 | Re : Problème avec la fonction RegQueryValueEx... en C

slao

Normal que ça ne fonctionne pas! je te conseille de relire attentivement la MSDN qui est claire à ce sujet. Et en gros ce qui ne va pas dans ton code:

1/ Applique un retour à tes méthodes, de cette façon tu aura une idée plus précise sur le pourquoi du non fonctionnement.
LONG lResult = !ERROR_SUCCESS;
lResult = RegOpenKeyEx ...
lResult &= RegQueryValueEx...

2/ Dans ton cas je suis presque sur que cela donnerait ERROR_MORE_DATA.
Et ce tout simplement parce que le dernier argument de RegQueryValueEx() est un argument de type in/out et vu que tu le renseigne par datatestsize sans lui donner de valeur, on peut supposer que cette variable vaut 0. Si bien que la méthode ne retourne rien etant donné qu'elle a pour argument "la taille du buffer max ou tu peux stocker la valeur lue vaut 0".
Pour résoudre ca fais :
datatestsize = sizeof(datatest);

3/ Le cast du troisième argument de RegQueryValueEx(): (BYTE*)datatest est très important, il doit refleter le type de la valeur lue, si c'est une chaine de type char stockée dans la base de registre via un champ binary, il ne faudra pas caster cet argument avec LPBYTE par exemple.

4/ Vérifies que TEXT(subkey) soit bien de la forme Comm\\E100\\Parms et non Comm\E100\Parms ou Comm/E100... enfin j'en passe



Cette discussion est classée dans : donnée, valeur, data, regqueryvalueex, datatest


Répondre à ce message

Sujets en rapport avec ce message

Connexion serveur de base de donnée [ par Hteamspy ] Bonjour à tous,Pour un développement dans mon entreprise j'ai besoins de connecter un palm ou un P PC ( si possibilible les 2 ) à une base access.Le m base de donnée... [ par scortex84 ] Bonjour !Cela fait plusieurs mois que je cherche comment me connecter à partir de mon pocket PC à une base de donnée mysql ou autre !En fait, ma quest Créer un enregistrement dans une base de donnée Dataset sur PDA [ par Rlooping ] Comment Faire pour ajouter un enregistrement dans une base de donnée Dataset ???? Base de donnée .cdb [ par btkmine ] Bonjourje viens de developper une petite application sur le Pocket Pc avec Vb.net et j'arrive a me connecter a la base de données .cdb et j'arrive a f Composant COM [ par neophenix83 ] Bonjour,Bon, alors voilà, j'ai un code C++ dans lequel je veux faire un comosant qui dépend de IUnknown(une calsse dérivée en fait).Je regarde dans le connection à une base de donnée access??????? [ par sounamar ] salut :je ss une stagaire en 2éme année dans un institut de développement informatique,et j'ai comme application de stage une application de gestion d valeur_non_comprise_dans_la_plage [ par gzitoun ] Bonjour a tous,j ai recuperer un projet pour PDA (utilisation d une base de donnees) realise avec une ancienne version de Visual Studio.Je n arrive pa System.Data.DataRowView [ par gzitoun ] Salut, j ai un souci au demarrage de l application : voici le message que j obtiens dans la case labelTst:System.Data.DataRowView Sinon a part cel VB.Net Si valeur Absente dans un Tableau [ par JeffC1977 ] Salut à tousJe ne sais pas comment coder cela...Si valeur du textbox est absente dans le tableau alors...J'ai codé cela mais ça fonctionne que pour un cherche forme base donnée [ par samurland ] je cherche ou je vai enregistrai mes base de donnée mais je ne peut pa l'access ou le sql ou d'autre qu'il faut l'attacher avec le net ou un server et


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales