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 :

[C#] Ecriture/Lecture base de registre


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Points : 311
    Points
    311
    Par défaut [C#] Ecriture/Lecture base de registre
    Bonsoir

    Je développe actuellement un service windows qui sera installé sur un client. J'ai besoin de stocké l'identifiant du PC ansi que le chemin d'installation dans la base de registre.

    L'écriture dans la base de registre fonctionne. J'ai vérifié en allant voir dans la base de registre.

    Mon problème se situe dans la lecture de ces valeurs. Je n'arrive pas à les récupérer.

    Je vous donne mes deux fonctions :
    //Fonction qui stocke 2 paramètres dans la base de registre : le chemin d'installation et l'ID du PC
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public void Stock_Parametre(string chemin, int IdPC)
            {
                //On définit la clé au niveau du noeud CurrentUser
                RegistryKey cu = Registry.CurrentUser;
                //Création de la sous-clé Authentification
                RegistryKey rk = cu.OpenSubKey(@"Software\Superviseur", RegistryKeyPermissionCheck.Default);
     
                try
                {  
                    if (rk == null)
                    {
                        //Création de la sous-clé Authentification
                        rk.CreateSubKey(@"Software\Superviseur");
                        rk.SetValue("DossierInstal", chemin);
                        rk.SetValue("IdPC", IdPC);
                    }                
                }
                catch (Exception er)
                {
                    //Message d'erreur
                    Console.Write("Superviseur : " + er.Message );
                }
                finally
                {
                    // Fermeture de la clé
                    rk.Close();
                }
    }
     
    private void ReadValue()
            {            
                RegistryKey Nkey = Registry.CurrentUser;            
                try {
                    RegistryKey key = Nkey.OpenSubKey(@"Software\Superviseur", true);
                    this.chemin = (string)Nkey.GetValue("DossierInstal").ToString();
                    Nkey.Close();
                }
                catch(Exception er){
                }
                finally{
                    Nkey.Close();
                }
    }
    Le probleme est que key est toujours à NULL.
    Je me dis que c'est peut-etre un problème de droit. J'ai regardé la classe RegistryPermission mais je n'ai pas tout compris.

    Si vous avez une solution ou une piste de réflexion, merci d'avance.

    Bonne fin de weekend.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Points : 91
    Points
    91
    Par défaut
    Voici une fonction qui chez moi fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RegistryKey Registre = Registry.CurrentUser.OpenSubKey(@"Software\MonAppli", true);
    return (string)Registre.GetValue("MonChamp");
    Ca m'étonnerait que ce soit un problème de droit, vu que tu as accès en écriture à ce registre.

    Ne serait-ce pas un pb de type ? Comme tu as une valeur int et une valeur string ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Points : 311
    Points
    311
    Par défaut
    Je pense avoir identifier d'ou viens le problème.
    En fait je suis dans un service windows et je pense que je ne dispose pas des autorisations nécessaires pour lire dans la base.

    Tant pis.

  4. #4
    Membre habitué Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 135
    Points
    135
    Par défaut
    tu vois pas que c faut???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
                    RegistryKey key = Nkey.OpenSubKey(@"Software\Superviseur", true);
                    this.chemin = (string)Nkey.GetValue("DossierInstal").ToString();
                    Nkey.Close();
                }
                catch(Exception er){
                }
                finally{
                    Nkey.Close();
                }
    il faut modifier pour rendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
                    RegistryKey key = Nkey.OpenSubKey(@"Software\Superviseur", true);
                    this.chemin = (string)key.GetValue("DossierInstal").ToString();
                    key.Close();
                }
                catch(Exception er){
                }
                finally{
                    Nkey.Close();
                }
    tu a déclaré key et tu n'as la par utilisé!!!

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Je dirais même plus (en supposant que le code précédent fonctionne) :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try {
         RegistryKey key = Nkey.OpenSubKey(@"Software\Superviseur", true);
         try
            { this.chemin = key.GetValue("DossierInstal").ToString(); }
         finally
            { key.Close(); }
        }
    catch(Exception er){
    }
    finally{
       Nkey.Close();
    }

Discussions similaires

  1. [winapi] Lecture base de registre
    Par Al_th dans le forum C
    Réponses: 0
    Dernier message: 24/10/2010, 18h33
  2. Script vbs pour lecture base de registre
    Par bilal78 dans le forum VBScript
    Réponses: 1
    Dernier message: 01/07/2009, 19h32
  3. Ecriture, lecture de la base de registre sous vista
    Par ninaleo dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 05/12/2008, 10h07
  4. Lecture base de registre client
    Par locs dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 02/02/2007, 10h03
  5. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06

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