Exporeter la base de registre et la lire

Résolu
Signaler
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
alors voila je doit exporte une partie de la base de regsitre puis la lire mais si vous avez remarquer entre chaque lettre il y a un NULL qui donne la fin et je voudrais savoire comment faire pour lire un fichier de la base de registre ( ce fichier s'obtien quand on fait regedit /E "nom de la clé" "nom du fichier")

15 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Mais si mon code ne marchait pas, je serais RMIste depuis longtemps...
C'est ton mode d'affichage qui déconne.

Regarde RegOpenKeyEx() dans MSDN, tu y trouveras toutes les fonctions pour lister les clés.

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
C'est surement en unicode.

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

alors comment faire pour lire l'unicode?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
comme tout autre fichier: ReadFile()

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

c'est en c? qui marche avec gcc?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
API Windows est accessible depuis tout langage gérant le stdcall, le C étant le langage de base alors bien entendu aucun problème.

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

comment on l'utilise juste
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Fais une recherche 'CreateFile' dans zone de recherche en haut de page.

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

j'ai essayé mais le même resultat qu'avent
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Si c'est prob de conversion ANSI<=>UNICODE:
MultiByteToWideChar()
WideCharToMultiByte()

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

en fet mon problème c'est qu'il y a des null entre les caractère du fichier et je lis tjr que la première lettre!
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Une lecture de fichier (ReadFile par exemple) se fout complètement de la valeur des octets, il n'y a que les libs d'interprétation pour ennuyer le monde avec ces considérations fumeuses.

HANDLE hfl;
DWORD d;
BYTE bts[300];
hfl = CreateFile(....);
if(hfl == INVALID_HANDLE_VALUE) return;
ReadFile(hfl, bts, 300, &d, 0);
CloseHandle(hfl);

d contient nbr octets aspirés dans buffer bts, quelle que soit la valeur de chaque octet.

ciao...
BruNews, MVP VC++
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

essay exporte une clé de ta base de registre et meme ton code MARCHE PAS JE SUIS PERDU !!!!!!!!!!!!!!!!!!!!!!!!! une mauvaise année commence ...
sinon il y aurait pas une fonction pour énumérer les chaine REG_SZ d'une clé?
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

je fais juste un printf....
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Je ne consolade plus depuis le siècle dernier mais je pense qui si tu faisais la conversion UNICODE => ANSI comme dit plus haut, ça irait mieux.
Il est clair qu'au 1er 0 binaire rencontré, printf considère la chaine finie.
wprintf() devrait aller.

ciao...
BruNews, MVP VC++