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 :

Comment ouvrir des "sub-key" d'une "registry key"?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Comment ouvrir des "sub-key" d'une "registry key"?
    Salut,

    Je suis entrain de programmer un outil qui doit manipuler les registry-key. J'arrive à ouvrir la clé avec RegOpenKeyEx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RegOpenKeyEx( HKEY_LOCAL_MACHINE,TEXT(KEY), 0,KEY_READ,&hTestKey)
    Et après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RegEnumKeyEx(hTestKey, i,achKey,&cbName,NULL,NULL,NULL,&ftLastWriteTime)
    On a achKey comme le nom de sub-key ( LPCWST)

    Mais je n'arrive pas d'utiliser le RegOpenKeyEx pour ouvrir les sub-keys.Quel qu'un m'aide s'il te plait.

    Merci beaucoup

  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
    Ça se fait pourtant aussi facilement que le premier RegOpenKeyEx()...

    Montre ta façon d'essayer de l'utiliser pour ouvrir les subkeys...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut voici le 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
    16
     
    HKEY adapter_key;
    LONG status;
    DWORD len;
    status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT(ADAPTER_KEY),0,
                           KEY_READ,&adapter_key);
     
    while(true)
    {
        char enum_name[256];
        status =RegEnumKeyEx(adapter_key,
                            i,enum_name,&len,NULL,NULL,NULL,NULL);
        printf(enum_name);
    /*...*/
        (RegOpenKeyEx comment ?)
    }
    et maintenant je ne sais plus comment faire pour ouvrir les sub-keys. Deplus avec printf je n'arrive que d'afficher le premier character du nom des sub-key .

    Tu as une idée? Merci

  4. #4
    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
    Déjà, tu dois utiliser des TCHAR et non des char.
    Ensuite, il te suffit normalement d'utiliser RegOpenKeyEx() avec adapter_key en premier paramètre, enum_name en second, et l'adresse d'un nouveau handle en dernier...

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Points : 301
    Points
    301
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    HKEY hKey;
        int size, l;
        char *c;
        if(RegOpenKeyExA(HKEY_CURRENT_USER,
           "Software\\Microsoft\\Windows Media\\WMSDK\\General", 0,
           KEY_QUERY_VALUE, &hKey))
            return 0;
        size = bufsize;
        l = RegQueryValueExA(hKey, "ComputerName", 0, 0, (BYTE*) szbuf, 
                            (DWORD*) &size);
        RegCloseKey(hKey);
    Ca marche très bien avec ca

    NB : Les A en fin de fonction sont du fait de l'UNICODE, tu peux les enlever si tu est en multi-bytes.

  6. #6
    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
    Citation Envoyé par PP(Team)
    NB : Les A en fin de fonction sont du fait de l'UNICODE, tu peux les enlever si tu est en multi-bytes.
    NON.

    Tu peux les enlever si tu fais tout avec des TCHAR et la macro TEXT(), et uniquement dans ce cas.
    Pour qu'un projet Win32 compile bien, il faut utiliser la version A avec les char, la version W avec les WCHAR, et la version sans suffixe pour les TCHAR.

    PS: Il n'est pas ici question de valeurs, mais de sous-clés...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par Médinoc
    NON.

    Tu peux les enlever si tu fais tout avec des TCHAR et la macro TEXT(), et uniquement dans ce cas.
    Pour qu'un projet Win32 compile bien, il faut utiliser la version A avec les char, la version W avec les WCHAR, et la version sans suffixe pour les TCHAR.

    PS: Il n'est pas ici question de valeurs, mais de sous-clés...

    Enfin bon, sauf erreur, mais c'est comme ca pour pas mal de fonctions, si tu ne met pas de préfixe, ca t'envoie vers W, donc ca ne sert à rien de préciser le W.

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par PP(Team)
    Enfin bon, sauf erreur, mais c'est comme ca pour pas mal de fonctions, si tu ne met pas de préfixe, ca t'envoie vers W, donc ca ne sert à rien de préciser le W.
    Et le jour où tu ne compileras plus en unicode cela t'enverra vers la version A, sauf que là pas de bol tu travaillais avec des WCHAR et que ça ne compilera plus.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Médinoc
    Déjà, tu dois utiliser des TCHAR et non des char.
    Ensuite, il te suffit normalement d'utiliser RegOpenKeyEx() avec adapter_key en premier paramètre, enum_name en second, et l'adresse d'un nouveau handle en dernier...

    Merci bcp, elle marche bien maintenant ^^

Discussions similaires

  1. Comment ouvrir des fichiers avec GWT
    Par lila23 dans le forum GWT et Vaadin
    Réponses: 4
    Dernier message: 06/08/2009, 10h49
  2. [Windows NT] Comment ouvrir des ports?
    Par BertMont dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 28/10/2008, 11h08
  3. Réponses: 2
    Dernier message: 04/06/2007, 09h33
  4. [VB.net]Comment ouvrir des vidéos ?
    Par Poulain dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/10/2006, 07h00
  5. [VBA Access] Comment ouvrir des fichiers
    Par tiotel dans le forum Access
    Réponses: 3
    Dernier message: 01/08/2006, 18h03

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