Gestion registre ?

Résolu
Vortigaunt Messages postés 11 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 mars 2008 - 6 mars 2008 à 21:10
Vortigaunt Messages postés 11 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 mars 2008 - 7 mars 2008 à 18:31
Bonjour à tous,

Voilà, je développe actuellement un logiciel qui a pour but de lister les valeurs de certaines clés du registre.

Cependant, je ne comprends pas comment faire pour y arriver. J'ai parcouru longuement la MSDN, et ai bien découvert les fonctions RegOpenKeyEx, RegEnumKeyEx... Mais je n'y arrive pas.

Un petit coup de main serait bienvenu,

Merci d'avance !

8 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 mars 2008 à 00:04
Voici un exemple fonctionnel:
    char buffer[512];
    char data[256];
    HKEY hKey;
    DWORD taille=256;
    LONG retour=RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0, KEY_QUERY_VALUE, &hKey);
    int index=0;
    retour=RegEnumValue(hKey,0,buffer,&taille,0,0,(LPBYTE)data,&taille);
    do
    {
        lstrcat(buffer," = ");
        lstrcat(buffer,data);
        MessageBox(0,buffer,"",0);
        index++;
        taille=256; // Réinitialisation de la taille des buffers
        retour=RegEnumValue(hKey,index,buffer,&taille,0,0,(LPBYTE)data,&taille);
    }while(retour!=ERROR_NO_MORE_ITEMS);
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 mars 2008 à 00:12
J'ai oublié d'ajouter à la fin du code:
RegCloseKey(hKey);
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 mars 2008 à 21:19
Salut,
Tu n'arrives pas à quoi? Tu veux faire quoi exactement?
0
Vortigaunt Messages postés 11 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 mars 2008
6 mars 2008 à 21:30
Salut,

Merci pour ta réponse.

J'aimerai obtenir toutes les valeurs d'une clé en particulier, du genre:

HKLM\Software\Microsoft\Windows\CurrentVersion\Run

pour pouvoir les imprimer à l'écran.
0

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

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 mars 2008 à 22:30
Dans ce cas tu devrais utiliser RegEnumValue() au lieu de RegEnumKeyEx().
0
Vortigaunt Messages postés 11 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 mars 2008
6 mars 2008 à 22:48
Oui ok !

Voici mon code:

HKEY Resultat;
DWORD i=0;
char buf[256];
DWORD sizeofbuf = sizeof (buf);
char buf_2[256];
DWORD sizeofbuf_2 = sizeof(buf_2);

if(!(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&Resultat)==ERROR_SUCCESS))
cout << "PAS OK";


while(RegEnumValue(Resultat,i,buf,&sizeofbuf,NULL,NULL,(BYTE*)buf_2,&sizeofbuf_2)==ERROR_SUCCESS)
{
cout << buf << " -> " << buf_2 << endl;
i++;
}

Mais j'ai un autre problème. Lorsque j'essai de lister toutes les valeurs de la clé Run, il n'y en a qu'une qui s'affiche... Pourquoi ? Que dois-je faire pour lister toutes les valeurs ?
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 mars 2008 à 23:49
C'est normal car les tailles fournies en 4eme et en dernier paramètres de RegEnumValue() sont modifiées après l'appel de cette fonction. Il suffit donc de les reinitialiser avant chaque appel à RegEnumValue(). Je vais te faire un petit exemple.
0
Vortigaunt Messages postés 11 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 mars 2008
7 mars 2008 à 18:31
Bonjour,

Je te remercie, le code fonctionne parfaitement. J'ai compris ce qui se passe maintenant.

Félicitations pour le boulot que vous faites ici, et à un de ces jours au détour d'une question !

++
0
Rejoignez-nous