IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lecture du registre style parseur


Sujet :

C++

  1. #1
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut Lecture du registre style parseur
    Bonjour � tous !

    Et oui encore moi... Cette gestion de parc m'occupe beaucoup ces derniers temps... En plus de �a, �a m'apprend beaucoup sur le language C++ ce qui est tr�s bien.

    Alors voila, j'arrive � un moment de mon dev o� il faut que je r�cup�re la liste des logiciels install�s sur le poste. Je veux donc r�cuperer les valeurs de la chaine "DisplayName" se trouvant dans une cl� specifique au logiciel et qui se trouve toutes dans l'arborescence : "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

    Donc le but serait de se positionner sur cette arborescence et de descendre dans chaque sous cl� et lire la valeur de la chaine en question...

    Mais comment faire, je sais lire une valeur de chaine dans une cl� sp�cifique mais comment faire pour recuperer la premiere cl� de l'arborescence, puis passer � la suivante etc... jusqu'� arriver � ce qu'il n'y en ai plus?

    J'ai bien trouv� des morceau de code par-ci par-l� mais rien de bien concluant m�me en y passant ma matin�e...

    Au fait, je code avec code::blocks et compile avec mingw !

    Je remercie encore une fois tous ceux qui pourront m'aider ou m�me juste se pencher sur mon probl�me.

    Promis, quand je serais devenu "bon", moi aussi je pourrais vous aider !

    Edit : Tiens d'ailleur si on pouvait m'expliquer comment mettre toute les valeures r�cup�r� en m�moire et pouvoir les recuperer facilement, je sais faire en vb mais pas en c++...du moins.....pas encore! Merci !

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par Verbalinsurection Voir le message
    Bonjour � tous !

    Et oui encore moi... Cette gestion de parc m'occupe beaucoup ces derniers temps... En plus de �a, �a m'apprend beaucoup sur le language C++ ce qui est tr�s bien.

    Alors voila, j'arrive � un moment de mon dev o� il faut que je r�cup�re la liste des logiciels install�s sur le poste. Je veux donc r�cuperer les valeurs de la chaine "DisplayName" se trouvant dans une cl� specifique au logiciel et qui se trouve toutes dans l'arborescence : "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

    Donc le but serait de se positionner sur cette arborescence et de descendre dans chaque sous cl� et lire la valeur de la chaine en question...

    Mais comment faire, je sais lire une valeur de chaine dans une cl� sp�cifique mais comment faire pour recuperer la premiere cl� de l'arborescence, puis passer � la suivante etc... jusqu'� arriver � ce qu'il n'y en ai plus?

    J'ai bien trouv� des morceau de code par-ci par-l� mais rien de bien concluant m�me en y passant ma matin�e...

    Au fait, je code avec code::blocks et compile avec mingw !

    Je remercie encore une fois tous ceux qui pourront m'aider ou m�me juste se pencher sur mon probl�me.

    Promis, quand je serais devenu "bon", moi aussi je pourrais vous aider !

    Edit : Tiens d'ailleur si on pouvait m'expliquer comment mettre toute les valeures r�cup�r� en m�moire et pouvoir les recuperer facilement, je sais faire en vb mais pas en c++...du moins.....pas encore! Merci !
    La fonction RegEnumValue() est ton amie :-)

    Raymond
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut
    Merci pour ta r�ponse ram_0000.
    J'ai donc maintenant ce code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        string NomPc;
        HKEY hkKey;
        HKEY hkKeyOpened;
        char *subKey;
        subKey = new char;
        DWORD dwName = 512 * sizeof(TCHAR);
        int xSubKey = 0;
     
        if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) == ERROR_SUCCESS) {
            RegOpenKeyEx(hkKey, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", 0, KEY_ALL_ACCESS, &hkKeyOpened);
            while(RegEnumKeyEx(hkKeyOpened, xSubKey, subKey, &dwName, NULL, NULL, NULL, NULL)!= ERROR_NO_MORE_ITEMS) {
                cout << subKey << endl;
                xSubKey++;
            }
        }
    et en sorti j'ai �a :
    AddressBook
    AddressBook
    AddressBook
    AddressBook
    Branding
    CCleane
    CCleane
    CCleane
    CCleane
    CCleane
    CCleane
    CCleane
    CCleane
    eMule
    eMule
    eMule
    eMule
    eMule
    ICW
    ICW
    ICW
    ICW
    ICW
    ICW
    ICW
    ICW
    ICW
    ...
    Je met pas tout sinon �a fait 2 pages , le nombre de ligne qu'il ressort correspond au nombre de cle dans le registre, mais pourquoi 3-4 fois la meme en sautant certaine, chelou... voila par exemple les premiere cle de mon regsitre :
    AddressBook
    All ATI Software
    AntiViral Toolkit Pro
    ATI Display Driver
    Branding
    CCleaner
    CNXT_MODEM_HDAUDIO_VEN_14F1&DEV_2BFA&SUBSYS_14F100C3
    CobBackup8
    Code::Blocks_is1
    etc..
    Merci encore pour vootre aide!

  4. #4
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par Verbalinsurection Voir le message
    Merci pour ta r�ponse ram_0000.
    J'ai donc maintenant ce code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        string NomPc;
        HKEY hkKey;
        HKEY hkKeyOpened;
        char *subKey;
        subKey = new char;
        DWORD dwName = 512 * sizeof(TCHAR);
        int xSubKey = 0;
     
        if (RegConnectRegistry(NomPc.c_str(),HKEY_LOCAL_MACHINE,&hkKey) == ERROR_SUCCESS) {
            RegOpenKeyEx(hkKey, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\", 0, KEY_ALL_ACCESS, &hkKeyOpened);
            while(RegEnumKeyEx(hkKeyOpened, xSubKey, subKey, &dwName, NULL, NULL, NULL, NULL)!= ERROR_NO_MORE_ITEMS) {
                cout << subKey << endl;
                xSubKey++;
            }
        }
    et en sorti j'ai �a :


    Je met pas tout sinon �a fait 2 pages , le nombre de ligne qu'il ressort correspond au nombre de cle dans le registre, mais pourquoi 3-4 fois la meme en sautant certaine, chelou... voila par exemple les premiere cle de mon regsitre :

    Merci encore pour vootre aide!
    Je pense que tu fais une erreur dans l'appel � RegConnectRegistry() (et je suis m�me surpris que cela ne plante pas :-)

    Le troisi�me param�tre est l'adresse d'un tableau allou� au pr�alable. Dans ton can, tu fais "char *subKey = new char;", donc tu alloues un seul caract�re.

    Le quatri�me param�tre est l'adresse de la taille allou�e de ton tableau.

    Si la taille allou�e n'est pas suffisante, le fonction retourne avec le code ERROR_MORE_DATA et la taille d�sir�e est retourn�e dans le 4eme parametre.

    voir http://msdn2.microsoft.com/en-us/library/ms724862.aspx pour plus d'info

    Hope this will help
    Raymond
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirm� Avatar de Verbalinsurection
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2007
    Messages
    127
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activit� : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par d�faut
    merci encore � toi ram_0000 mais eu....comment dire....tu peux m'en dire plus, un exemple de code par exemple en utilisant le miens....

    Merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Lecture Fichier] Optimisation du parseur
    Par MrDuChnok dans le forum Entr�e/Sortie
    R�ponses: 20
    Dernier message: 03/04/2009, 11h17
  2. RegEnumValue() pour la lecture de registre
    Par scarlaty dans le forum Windows
    R�ponses: 5
    Dernier message: 28/02/2008, 09h04
  3. Lecture du Registre Windows
    Par mourbare dans le forum Windows
    R�ponses: 2
    Dernier message: 27/02/2008, 08h42
  4. [CR9] Lecture du registre
    Par exyacc dans le forum SAP Crystal Reports
    R�ponses: 2
    Dernier message: 04/11/2005, 11h17
  5. R�ponses: 4
    Dernier message: 23/07/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo