[C++] Base de registre

Base de registre [C++] - Programmation

Marsh Posté le 15-10-2001 à 15:04:08    

Il faudrait que je recupere des valeurs dans la base de registre.
J'utilise la fonction RegOpenKeyEx et RegQueryValueEx, mais impossible de les faire fonctionner :??:
 
Quelqu'un a un exemple ?

Reply

Marsh Posté le 15-10-2001 à 15:04:08   

Reply

Marsh Posté le 15-10-2001 à 15:10:49    

plus simple :
 
#include <atlbase.h>
 
 
CRegKey key
status = key.Create(HKEY_CURRENT_USER,"Software\\blah" );
 
char  path[512];
DWORD sizePath=512;
 
status = key.QueryValue(path,"macle",&sizePath);
if (status == ERROR_SUCCESS)
//cle trouvee
 
 
"macle" etant bien entendu le nom de la cle dont tu veux l info

 

[edtdd]--Message édité par chrisbk--[/edtdd]

Reply

Marsh Posté le 15-10-2001 à 15:25:57    

euh, ouaip
c'est pas grave si j'utilise pas les deux grosses fonctions de la mort qui tue ?

Reply

Marsh Posté le 15-10-2001 à 15:26:53    

les RegOpenKeyEx  et consort ?
 
nope, a mon avis la CRegKey le fait gentillement pour toi
sympa non ? :)

Reply

Marsh Posté le 15-10-2001 à 15:30:50    

ok ben je vais tester alors.
Mais ca me fait chier de caler la moitie de ce qu'il faut faire, les fonctions, etc...
Ils pourraient foutre des exemples dans le msdn

Reply

Marsh Posté le 15-10-2001 à 16:05:59    

le path c'est bien Software//.... paske la j'ai une belle erreur d'execution

Reply

Marsh Posté le 15-10-2001 à 20:21:20    

intéressant ce pti topic :)

Reply

Marsh Posté le 15-10-2001 à 23:02:03    

plantage ?
 
ca m'epate, g fait cut & paste de mon code, qui marche
 
mettons que dans ton registre tu aie le rep HKEY_CURRENT_USER\sofware\godbout et dedans la clé pouet contenant la chaine "brol"
 
CRegKey key  
status = key.Create(HKEY_CURRENT_USER,"Software\\godbout" );  
 
char  path[512];  
DWORD sizePath=512;  
 
status = key.QueryValue(path,"pouet",&sizePath);  
 
normalement, si je ne bois pas, path doit contenir "brol"

Reply

Marsh Posté le 16-10-2001 à 08:52:40    

ok ben je m'etais surement plante avec le path.
Je vais reessayer, mais j'aimerais comprendre pourquoi j'arrive pas a utiliser les fonctions RegOpen..., etc...
 
Suis je vraiment nul ?? :??:

Reply

Marsh Posté le 16-10-2001 à 08:59:30    

non :D
 
les fonctions du registres ont souvent 250param, pas tjs faci;e de voir ce qu'ils veulent :)

Reply

Marsh Posté le 16-10-2001 à 08:59:30   

Reply

Marsh Posté le 16-10-2001 à 09:01:36    

ok ca marche  
merci ;) (encore 1 fois:))

Reply

Marsh Posté le 16-10-2001 à 09:15:54    

Godbout a écrit a écrit :

(encore 1 fois:))  




 
la facture devrait bientot arriver :D

Reply

Marsh Posté le 16-10-2001 à 09:21:30    

Au fait tu fais koi comme boulot ?
Parce que j'ai remarque que tu connaissais un sacre paquet de truc, comme deux ou trois autres sur ce forum (Guru, el_gringo, BENB)

 

[edtdd]--Message édité par Godbout--[/edtdd]

Reply

Marsh Posté le 16-10-2001 à 09:37:26    

je bosse pas, enfin pas vraiment .  
Pour le moment je suis stagiaire, jusqu'a decembre . apres ca je retourne a la fac pour 6 mois et apres soit je bosse soit je refait un an, je sais pas encore trop

Reply

Marsh Posté le 16-10-2001 à 09:42:43    

t'es en quelle annee de fac ?
fac de koi ?
ou t'as appris tout ca ?
quel age ?
oui ?
non ?

Reply

Marsh Posté le 16-10-2001 à 09:52:40    

IUP GMI 3eme annee, 21 ans (on dirait Maurice avec ses " qui va la je t prie :D)
 
j ai appris a cote en fait, depuis que g commencer l'IUT. je code des trucs pour moi, en dose assez...massives
 
moteur 3D principalement, et tout le tatoin qui va avec (plug in max, editeur et autre joyeusete du genre....)

Reply

Marsh Posté le 16-10-2001 à 09:54:11    

chrisbk a écrit a écrit :

IUP GMI 3eme annee, 21 ans (on dirait Maurice avec ses " qui va la je t prie :D)
 
j ai appris a cote en fait, depuis que g commencer l'IUT. je code des trucs pour moi, en dose assez...massives
 
moteur 3D principalement, et tout le tatoin qui va avec (plug in max, editeur et autre joyeusete du genre....)  




 
ok... (I'm calmed :D)

 

[edtdd]--Message édité par Godbout--[/edtdd]

Reply

Marsh Posté le 16-10-2001 à 10:02:47    

boaf, c juste une question de tps....et g passe pas mal de mon tps a coder ces derniers annees.
 
je te dirais que l'IUT m'a pas bpc appris (j'apprenais 10x plus vite avec "le C en 21 jours" qu'en suivant les cours de l'IUT) et l'iup pas trop non plus (du moins pour le C++)
 
 
tu bosses depuis lgtps ? quel etudes ?

Reply

Marsh Posté le 16-10-2001 à 10:04:21    

Ca fera bientot 2 mois.
J'ai fait un DUT info, c'est pareil ca m'a appris que les bases, en gros du bon vieux C dos :D
Je m'etais mis un peu a la prog windows, mais beaucoup moins pousse que ce que je fais (ou que j'ai l'impression de faire) en ce moment.

 

[edtdd]--Message édité par Godbout--[/edtdd]

Reply

Marsh Posté le 16-10-2001 à 10:07:49    

IUP = Institut Universitaire ___   :??:
GMI = Genie des Methodes Informatiques :??:
 
reelement je ne sais pas, dites moi...

Reply

Marsh Posté le 16-10-2001 à 10:11:27    

IUP = ..... professionalise, ou un truc du gout (blah ! :D)  
GMI = genie mathematique et informatique

Reply

Marsh Posté le 16-10-2001 à 10:13:52    

Merci :jap:
topic interessant...
j'ai appris sur la base de registre + IUP et GMI...

Reply

Marsh Posté le 16-10-2001 à 10:22:57    

Juste pour revenir au topic j'ai reussi a utiliser les deux grosses fonctions.
J'ai essaye meme si ta technique marchait chrisbk, non pas parce que je voulais forcement du bourrin mais plutot pour comprendre un peu les types, les arguments,etc..
 
Voila voila... :)

Reply

Marsh Posté le 16-10-2001 à 10:27:01    

Par contre je trouve ca terrible que les arguments demandes soit du type LPDWORD ou LPBYTE et que si tu les definis comme ca ca marche pas.
Oblige de les definir en tant que unsigned char et unsigned long.
Forcement quand t'es pas au courant c'est chaud (ou alors j'me demmerde encore comme une bille :D)

Reply

Marsh Posté le 16-10-2001 à 10:28:04    

pas de pb :)
 
A l'avenir tu auras le choix :)

Reply

Marsh Posté le 16-10-2001 à 10:38:43    

LP ca veut dire Long Pointer me semble-t-il...
donc c'est normal qu'il faille declarer une variable puis en passer l'adresse...  
par contre une * serait plus parlante (a mon avis)

Reply

Marsh Posté le 16-10-2001 à 10:46:40    

Ouais mais meme en mettant une * ou n'importe quoi il prend pas.
C'est pour ca que je m'obstinais a vouloir utiliser ces fonctions, histoire de comprendre.
 
LONG RegQueryValueEx(
  HKEY hKey,           // handle to key to query
  LPTSTR lpValueName,  // address of name of value to query
  LPDWORD lpReserved,  // reserved
  LPDWORD lpType,      // address of buffer for value type
  LPBYTE lpData,       // address of data buffer
  LPDWORD lpcbData     // address of data buffer size
);
 
 
Pour lpData
 
Si tu mets
LPBYTE path[512];
LPBYTE *path[512];
LPBYTE &path[512];
...
Enfin bref rien ne passe.
Il faut mettre unsigned char path[512]

Reply

Marsh Posté le 16-10-2001 à 10:49:47    

ouais attends, LPBYTE = unsigned char *  
 
bref, quand tu fais
LPBYTE path[512];  
 
c egal a : unsigned char * path[512]
ce qui n'est pas bon
 
faut faire :
 
BYTE path[512];

Reply

Marsh Posté le 16-10-2001 à 11:05:20    

et plutot que de mettre LPBYTE, je trouve qu'ils aurraient du mettre BYTE*...  
c'est tout...

 

[edtdd]--Message édité par BENB--[/edtdd]

Reply

Marsh Posté le 16-10-2001 à 11:05:53    

ok,  
ca m'aidera surement avec les prochaines fonctions, ca m'evitera de batailler pendant des heures.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed