Probleme création d'une clé de registre

stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 17 déc. 2006 à 14:49
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 18 déc. 2006 à 01:57
Salut, en regardant les sources du site, j'ai réussi à extraire un pti bou de code mais sa ne marche pas completement:
en effet, le chemin mycompagny/myapplication est bien créé dans HKEY_LOCAL_MACHINE/SOFTWARE
ce qui me donne HKEY_LOCAL_MACHINE/SOFTWARE/mycompagny/myapplication
ici, il y a bien la créaction d'une clé, mais elle na pas de nom (il y a marqué "par defaut") et elle n'as pas de valeurs.

Pourriez vous modifier ce code afin qu'il face une clé par exemple nomée mykey et avec la valeur "myvalue" ??
merci beaucoup d'avance !

voici le code :

// les includes (il sont pour tt le programme, pas seulement pour le registre)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <Winreg.h>

//la fonction main :

int main(int argc, char *argv[])   {

// ici, le code qui est cencé faire la clé :

 HKEY hkey; 
 DWORD dwDisposition; 
 int dwType = REG_SZ; 
 unsigned char boum[7] = "chaine"; 
 int dwSize = sizeof (boum); 
 RegCreateKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\My Company\\My Application"), 0, NULL, 0, 0, NULL, &hkey, &dwDisposition); 
 RegSetValueEx(hkey, "La Chaine", NULL, REG_SZ, (PBYTE)&boum, dwSize); 
 RegCloseKey(hkey);

// ici, du code du reste de mon programme...

} // fin de la fonction main

system("pause");  // je suis en mode console

encore merci d'avance !

@+

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2006 à 16:49
if(RegCreateKeyEx(...)) return 0; // FAUT CONTROLER AVANT DE CONTINUER.
RegSetValueEx(hkey, "La Chaine", NULL, REG_SZ, (PBYTE) boum, strlen(boum));

Faut aussi être cohérent, si c'est unicode c'est partout TEXT(...).

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2006 à 16:52
RegCreateKeyEx, faut aussi lui mettre le pourquoi création, KEY_ALL_ACCESS ou autre.

ciao...
BruNews, MVP VC++
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
17 déc. 2006 à 16:53
bonjour,
pour la verification, je le ferais ne dernier, je met ou TEXT(.........) ?

@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
17 déc. 2006 à 16:55
et je le met ou KEY_ALL_ACCESS ? avec HKEY_LOCAL_MACHINE avec un | ??

merci

@+
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2006 à 16:58
Faut consulter MSDN:
http://msdn.microsoft.com/library/en-us/default.asp

et exemple ici:
http://www.cppfrance.com/code.aspx?id=10357

ciao...
BruNews, MVP VC++
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
17 déc. 2006 à 17:02
en effet je suis deja allé a msdn, mais je ne comprend pas pourquoi mon code ne marche pas, c'est le seul simple que j'avais trouvé...

@+
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
17 déc. 2006 à 17:12
Avec ton lien, j'ai réussi à avoir sa :

HKEY hk;
  char *szKEY = "Software\\TestReg";
char *szINT = "Int";
char *szDBL = "Dbl";
char *szTXT = "Txt";
RegCreateKeyEx(HKEY_LOCAL_MACHINE, szKEY, 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &hk, 0);
RegSetValueEx(hk, szINT, 0, REG_DWORD, (BYTE*)&penr->ival, 4);
 RegCloseKey(hk);

le probleme c que je ne sais pas du tout ce qu'est penr , et donc a la compilation sa plante...

@+
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2006 à 17:17
Il y a plusieurs fichiers dans le projet, si vraiment tu ne sais pas les lire, faut aller étudier les bases du C avant de faire du copier coller qui ne te mènera à rien.

ciao...
BruNews, MVP VC++
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
17 déc. 2006 à 17:22
:b c'est juste que je ne compend rien aux commandes de registres :s
moi je voudrai juste, un truc tout simple, rien de plus, qui mette un clé de registre dans hkey_local_machine/software/microsoft/window/currentversion/run

rien de plus, les fichier que je trouve ont  10* trop de trucs

@+
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
18 déc. 2006 à 01:57
http://www.cppfrance.com/codes/GESTION-COMPLETE-BASE-REGISTRE_28348.aspx
Les fonctions qui devraient t'intéresser sont bdr_open, bdr_create, bdr_readDataKey , bdr_setDataKet et bdr_close.
Apres pour ta culture personelle, c'est vrai que reprendre le code et l'adapter c'est sympa, mais il faut quand meme avoir les bases du C, sinon, c'est perdu d'avance.

Tu peux prendre les fichiers c et h et utiliser directement les fonctions dans ton code.
Dommage que tu ne comprennes pas la source de brunews, pour une fois qu'il n'y avait pas trop d'asm....
On pouvait enfin la lire sans sortir le bouquin d'asm

brunews >> Quand je dis ça, je dis rien au contraire, ça donne un peu plus de piment à la lecture des sources,et c'est ma fois bien agréable.
Vive le C
Savon
0
Rejoignez-nous