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 :

Lire/écrire les registres


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Lire/écrire les registres
    Salut, je vous écrit car j'aimerais lire (puis par la suite écrire) dans les registres, mais j'suis un peu (beaucoup) perdu avec les fonctions nécéssairs... J'ai éssayé RegOpenKey/RegQueryValue, mais ça à rien donné de bon...

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Précise quel genre de cle tu veux lire, et aussi quel OS.
    Rappel sous XP, et aussi sans doute doute sous 2000, si on n'a pas les droits admin, on ne peut que lire les clef de HKEY_LOCAL_MACHINE, pas les modifier.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut Re: Lire/écrire les registres
    Citation Envoyé par Age Piranha
    Salut, je vous écrit car j'aimerais lire (puis par la suite écrire) dans les registres, mais j'suis un peu (beaucoup) perdu avec les fonctions nécéssairs... J'ai éssayé RegOpenKey/RegQueryValue, mais ça à rien donné de bon...
    Pourtant c'est les bonnes fonctions. Quel est ton code ? Quelles sont les erreurs ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Win XP, mais j'ai les droits d'admin sur mon pc quand même, ouf. Et puis pour l'instant je fais que de la lecture, donc ça devrais aller...

    Voilà le code ressemble à ça...
    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
    17
    18
    19
    20
        PHKEY KeyHandle;
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\maclef",0,
                                    KEY_ALL_ACCESS,KeyHandle)==ERROR_SUCCESS)
        {
             char KeyValue[MAX_PATH];
             LPDWORD osf;
             LPDWORD size;
             if (RegQueryValueEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\maclef\\INSTALL-PATH",NULL,osf,KeyValue,size)==ERROR_SUCCESS)
             {
                 /*blablabla*/
             }
             else
             {
                 printf("Impossible de lire la clefs\n");
             }
        }
        else
        {
           printf("Impossible d'ouvrir la clefs!\n"); 
        }
    Et ça marche pas, je me retrouve directement avec un impossible d'ouvrir la clef... J'ai pitêtre zappé quelque chose dans l'histoire...

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ben oui, Problème classique de pointeur non initialisé :
    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
    17
    18
    19
    20
    21
     //   PHKEY KeyHandle; // c'est un pointeur, il pointe n'importe - ou
        HKEY KeyHandle;
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\maclef",0,
                                    KEY_ALL_ACCESS, &KeyHandle)==ERROR_SUCCESS)
        {
             char KeyValue[MAX_PATH];
             LPDWORD osf;
             LPDWORD size;
             if (RegQueryValueEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\maclef\\INSTALL-PATH",NULL,osf,KeyValue,size)==ERROR_SUCCESS)
             {
                 /*blablabla*/
             }
             else
             {
                 printf("Impossible de lire la clefs\n");
             }
        }
        else
        {
           printf("Impossible d'ouvrir la clefs!\n");
        }
    Je reamrque que tu as le même problème avec LPDWORD osf et LPDWORD size; il faut que tu fasses
    DWORD osf; DWORD size; et que tu passes les adresses.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Ok, j'avais éssayé de passer les adresses des LPDWORD, mais là le compilo fesais la gueule... Bon, ça c'est déjà réglé, mais c'est pa ssuffisant puisque je ne peux même pas ouvrir la clef...

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Tu ne passes pas la première étape ??
    Le code est correct.
    Tu as utilisé FormatMessage pour savoir ce qui se passe ?
    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
    17
    18
    LPVOID lpMsgBuf;
    FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL 
    );
    // Process any inserts in lpMsgBuf.
    // ...
    // Display the string.
    MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
    // Free the buffer.
    LocalFree( lpMsgBuf );
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Tu as utilisé FormatMessage pour savoir ce qui se passe ?
    euh non, bonne idée tien... Je vais tester

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    alors, voici l'érreur qu'il me sort: "Impossible de créer un fichier déjà éxistant"... Pas terrible... Ca m'aide pas trop... Bon, j'vais continuer à chercher...

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegQueryValueEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\maclef\\INSTALL-PATH",NULL,osf,KeyValue,size)
    c'est pas bon ça.
    1° paramètre : la clé à lire, soit celle que tu as ouverte juste avant => KeyHandle
    2° paramètre : le nom de la valeur => "INSTALL-PATH" apparement
    4° paramètre : REG_SZ je suppose (osf il vaut quoi ???)
    5° paramètre : un buffer pour récupérer sa valeur => KeyValue
    6° paramètre : l'adresse d'un DWORD contenant la taille du buffer => même erreur tu files un pointeur non initialisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char KeyValue[ MAX_PATH ]; 
    DWORD size = MAX_PATH;
    
    RegQueryValueEx(
        KeyHandle,
        "INSTALL-PATH",
        NULL,
        REG_SZ,
        KeyValue,
        &size )
    Faut lire la doc
    http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryvalueex.asp

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Hum oups D'après la doc j'avais compris que c'était la fonction qui renseignais le type de clefs :p
    Pour le reste j'avais déjà tenté comme ça, mais évidemement ça marchais pas... Bon, j'vais corriger tout ça... Merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Bon, merci à tous, maintenant ça passe... Je sais pas pourquoi mais ça passe!

    Juste une petite correction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char KeyValue[ MAX_PATH ]; 
    DWORD size = MAX_PATH; 
    DWORD regtype = REG_SZ
    
    RegQueryValueEx( 
        KeyHandle, 
        "INSTALL-PATH", 
        NULL, 
        &regtype, 
        KeyValue, 
        &size )
    Sinon on a le droit à un petit warning du compilateur...

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

Discussions similaires

  1. Lire/écrire fichier comme pour les fichiers .ini
    Par AliHome dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/12/2008, 14h26
  2. écrire et lire dans les registre
    Par patou41000 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 19/06/2007, 08h19
  3. Yahoo Mail Impossible de lire et écrire les messages
    Par mayiba21 dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 11/12/2006, 09h35
  4. pb pour lire/écrire dans base de registre
    Par Doksuri dans le forum Oracle
    Réponses: 6
    Dernier message: 21/06/2006, 13h34
  5. Réponses: 3
    Dernier message: 29/12/2004, 17h10

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