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

Windows Discussion :

Lecture du Registre Windows


Sujet :

Windows

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut Lecture du Registre Windows
    salut a tous,

    J'ai ecris un petit programme en c++ qui doit lire une cle du Registre windows, malheureusement, il ne me renvoie que le premier character dans le registre:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    void lecture()
    {
        HKEY keyHandle;
        char rgValue [1024];
        char fnlRes [1024];
        DWORD size1;
        DWORD Type;
     
            if( RegOpenKeyEx( HKEY_CURRENT_USER, 
                L"HKEY_CURRENT_USER\\Software",0, 
                KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS)
                 {
                    size1=1023;
                    RegQueryValueEx( keyHandle, L"Test3", NULL, &Type, 
                        (LPBYTE)rgValue,&size1);
                    sprintf(fnlRes,"HKEY_CURRENT_USER Software:: %s",rgValue);
                 }     
            else strcpy(fnlRes,"Couldn't access Software information!");
     
                RegCloseKey(keyHandle);
    }

    La valeur de Test3 peut etre "Bonjour" et comme solution de la lecture[rgValue] j ai juste "B" quelqu'un pourrait m'aider.

    Merci D'avance

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu compiles en unicode alors que tu passes un buffer de caractères non-unicode...

    Solution --> Utilise des TCHARs:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <windows.h>
    #include <tchar.h>
     
    void lecture()
    {
    	HKEY keyHandle;
    	TCHAR rgValue [1024];
    	TCHAR fnlRes [1024];
    	DWORD size1;
    	DWORD Type;
     
    	if( RegOpenKeyEx( HKEY_CURRENT_USER, 
    	 _T("HKEY_CURRENT_USER\\Software"), 0,
    	 KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS)
    	{
    		size1= sizeof(rgValue);
    		RegQueryValueEx( keyHandle, _T("Test3"), NULL, &Type,
    		 (LPBYTE)rgValue, &size1);
    		rgValue[ ARRAYSIZE(rgValue)-1 ] = _T('\0'); /*Juste pour être sûr. */
    		_stprintf(fnlRes, _T("HKEY_CURRENT_USER Software:: %s"), rgValue);
    	}
    	else
    		_tcscpy(fnlRes, _T("Couldn't access Software information!"));
     
    	RegCloseKey(keyHandle);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Tu compiles en unicode alors que tu passes un buffer de caractères non-unicode...

    Solution --> Utilise des TCHARs:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <windows.h>
    #include <tchar.h>
     
    void lecture()
    {
    	HKEY keyHandle;
    	TCHAR rgValue [1024];
    	TCHAR fnlRes [1024];
    	DWORD size1;
    	DWORD Type;
     
    	if( RegOpenKeyEx( HKEY_CURRENT_USER, 
    	 _T("HKEY_CURRENT_USER\\Software"), 0,
    	 KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS)
    	{
    		size1= sizeof(rgValue);
    		RegQueryValueEx( keyHandle, _T("Test3"), NULL, &Type,
    		 (LPBYTE)rgValue, &size1);
    		rgValue[ ARRAYSIZE(rgValue)-1 ] = _T('\0'); /*Juste pour être sûr. */
    		_stprintf(fnlRes, _T("HKEY_CURRENT_USER Software:: %s"), rgValue);
    	}
    	else
    		_tcscpy(fnlRes, _T("Couldn't access Software information!"));
     
    	RegCloseKey(keyHandle);
    }
    Je te remercie pour la reponse et surtout bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Virtual Pascal] Lecture d'une valeur du registre Windows
    Par Roland Chastain dans le forum Autres IDE
    Réponses: 9
    Dernier message: 29/06/2014, 21h45
  2. Lecture du registre avec Windows 7 x64
    Par leSeb dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/11/2012, 18h49
  3. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  4. Accès à la base de registre windows à distance
    Par xavame dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/07/2005, 15h23
  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