begin process at 2012 02 13 02:43:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Enumération incomplète avec RegEnumKeyEx


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

Enumération incomplète avec RegEnumKeyEx

lundi 26 mars 2007 à 19:40:25 | Enumération incomplète avec RegEnumKeyEx

Taron31

Membre Club
Bonjour, dans un programme je dois énumérer toutes les clefs de HKEY_CURRENT_USER, j'ouvre donc cette clef, je récupère le nombre de subkeys (RegQueryInfoEx), ensuite j'énumère toutes les subkeys avec RegEnumKeyEx, dans mon HKEY_CURRENT_USER, il y'a 15 subkeys, la fonction RegEnumKeyEx devrait donc me les énumérer toutes, le problème étant qu'elle me renvoie un erreur de code 234 (ERROR_MORE_DATA) ce qui veut dire que le buffer recevant le nom de la clef est trop petit, pourtant j'ai beau l'agrandir, j'ai toujours la même erreur... si vous avez deja rencontré le meme pb...

Voici le code :

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

DWORD X = 0, dwSubKeys = 0;

void enumKeys()
{
    HKEY hKey;
    DWORD dwNameLen;
    PCHAR pnameSubKey;

    if(RegOpenKeyExA(HKEY_CURRENT_USER, NULL, 0, 0xF003F, &hKey) != ERROR_SUCCESS) {
   
        MessageBoxA(NULL, "Error RegOpenKeyEx", "Error", MB_OK);
        return ;
     }   

    if(RegQueryInfoKeyA(hKey, NULL, 0, NULL, &dwSubKeys, NULL,
         NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) {
   
             MessageBoxA(NULL, "Error RegQueryInfoKey", "Error", MB_OK);
             return ;
     }
    printf("Num: %d\n\n", dwSubKeys);

    for(int i = 0; i < dwSubKeys; i++) {
       
        CHAR nameSubKey[10000];

        if(X >= dwSubKeys) exit(0);

        if(RegEnumKeyExA(hKey, X, nameSubKey, &dwNameLen,
             NULL, NULL, NULL, NULL) != ERROR_SUCCESS) {

                 printf("Ret: %d\n\n", RegEnumKeyExA(hKey, X, nameSubKey,
                            &dwNameLen, NULL, NULL, NULL, NULL));
           
            return ;   
        }

        X++;
        printf("SubKey: %s\n", nameSubKey);
    }

    RegCloseKey(hKey);
}

int main(int argc, char *argv[])
{
    for(int i = 0; i < 10; i++) enumKeys();
    return 0;
}

Si vous pouvez m'éclaires, meci


___________________
MSP
- Microsoft Student Partner (Microsoft)
lundi 26 mars 2007 à 19:47:46 | Re : Enumération incomplète avec RegEnumKeyEx

Taron31

Membre Club
dsl, problème réglé, il suffisait de donner une valeur à dwNameLen, dsl :s


___________________
MVS
- Most Valuable Student ( Microsoft)
lundi 26 mars 2007 à 20:26:40 | Re : Enumération incomplète avec RegEnumKeyEx

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Un exemple de "goto" judicieux au lieu d'accolades à rallonges:
if(RegQueryInfoKeyA(hKey, ...)) goto keyCLOSE;
.....
.....
keyCLOSE:
RegCloseKey(hKey);

éviterait d'oublier de fermer le handle de clé et aussi de mettre plusieurs appels RegCloseKey.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : error, return, hkey, regenumkeyex, dwsubkeys


Répondre à ce message

Sujets en rapport avec ce message

Prob WIN32 [ par AngeloVivaldi ] bonjour, voici un code ke g tapé pour mon apprentissage de la prog Graphique :#include LRESULT CALLBACK WinProc(HWND hWnd, UINT uMsg, WPARAM wParam, L Comment declarée la matrice matrix[x][y] [ par pirate75000 ] Comment declarée la matrice matrix[x][y]Le but est de remplir la matirce avec le Tableau Tabpuis effectuer une inversion video par matricepuis réécrit problème classe winnt.h [ par totoscill ] Bonjour,J'ai un problème avec la classe winnt.h de windows:J'essais d'ouvrir mon port série avec des fonction qui utilise DWORD.Lorsque je compile:d:\ erreur d'initialisation en C [ par jihedcom2011 ] Bonjour tous le monde , je suis un débutant en C. j'ai quelque erreurs lorsque j'ai compilé mon code qui est responsable de lire de registre Code : C Conversion code [ par jeanphilippe37 ] [u]Bonjour[/u], Voila, j'ai réalisé ce programme en C++ mais, je dois le rendre en langage C et j'ai bcp de mal à faire la traduction. Pourriez vous Error dans le fichier excel.tlh [ par dorras7 ] Salut, Je suis entrain de compiler un code sous visual c++ 6.0, et dans le code il y'a la lecture du fichier excel lors du compilation il m'a sorti ce Filtrer l'accès à un répertoire [ par syl1493 ] Bonjour, J'essaie de filtrer l'accès à un répertoire sur un site (html). J'ai donc créé dans le dossier en question un fichier .htaccess rédigé ainsi RegSaveKeyEx [ par PriMe2302 ] Bonjour, Je voudrais sauvegarder un clé registre ainsi que toutes ses sous-clé. En faisant une recherche sur le site de msdn, j'ai fait ce code : i cryptage de cesar sur c++ [ par juniordiaw ] bjr a tous g un problemea vec mon code o faite lorske g rentre un letre il me la crypte mai sil sagi dun mo ou dune phrase il ne crypte ke la premiere [FORTRAN]Parse error Fortran [ par souhaits ] Bonjour, J'ai un problème lors de l'exécution de mon programme fortran. Chaque fois, j'essaye de le tourner, il m'indique le message suivant : parse


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,905 sec (4)

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