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 :

Impossible d'écrire dans la base de registre ?


Sujet :

C#

  1. #1
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 192
    Billets dans le blog
    1
    Par défaut Impossible d'écrire dans la base de registre ?
    Bonjour
    J'obtiens une erreur sur le "CreateSubKey" :
    UnauthorizedAccessException {"Impossible d'écrire dans la clé de Registre."}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            public static void WriteRegistry(string keyname, object value)
            {
                if (Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("UEDISurvey") == null)
                {
                    Registry.CurrentUser.OpenSubKey("Software").CreateSubKey("UEDISurvey");
                }
                Registry.CurrentUser.OpenSubKey("Software").OpenSubKey("UEDISurvey").SetValue(keyname, value);
            }
    Comment faire ?

    Merci

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 192
    Billets dans le blog
    1
    Par défaut
    J'ai vérifier, et avec Regedit, je peux créer la clé.
    Une fois la clé créée, c'est la valeur que je ne peux pas créer (avec la même erreur)

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 192
    Billets dans le blog
    1
    Par défaut
    J'ai lu sur un forum qu'il fallait lire clé par clé, et les fermer quand on ne s'en servait plus.

    Ce que j'ai tenté de faire...

    Mais ça change rien !

    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
     
            public static object ReadRegistry(string keyname, object defaultvalue)
            {
                RegistryKey software = Registry.CurrentUser.OpenSubKey("Software");
                RegistryKey uedisurvey = software.OpenSubKey("UEDISurvey");
                if (uedisurvey == null)
                {
                    software.Close();
                    return defaultvalue;
                }
                object o = uedisurvey.GetValue(keyname, defaultvalue);
                uedisurvey.Close();
                software.Close();
                return o;
            }
     
            public static void WriteRegistry(string keyname, object value)
            {
                RegistryKey software = Registry.CurrentUser.OpenSubKey("Software");
                RegistryKey uedisurvey = software.OpenSubKey("UEDISurvey");
     
                if (uedisurvey == null)
                {
                    uedisurvey = software.CreateSubKey("UEDISurvey");
     
                }
                uedisurvey.SetValue(keyname, value);
     
                uedisurvey.Close();
                software.Close();
            }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    - il faut ouvrir la clé en écriture (en passant true en 2e paramètre de OpenSubKey)
    - pas la peine d'enchainer les OpenSubKey, tu peux spécifier directement le chemin complet
    - pas la peine de tester si la clé existe, si elle existe déjà CreateSubKey va simplement l'ouvrir en écriture
    - il faut toujours fermer les clés que tu ouvres ; le plus simple est d'utiliser un bloc usingDonc au final ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            public static void WriteRegistry(string keyname, object value)
            {
                using (var softwareKey = Registry.CurrentUser.OpenSubKey("Software", true))
                using (var uediSurveyKey = softwareKey.CreateSubKey("UEDISurvey"))
                {
                    uediSurveyKey.SetValue(keyname, value)
                }
            }
    Ou même encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            public static void WriteRegistry(string keyname, object value)
            {
                using (var uediSurveyKey = Registry.CurrentUser.CreateSubKey(@"Software\UEDISurvey"))
                {
                    uediSurveyKey.SetValue(keyname, value)
                }
            }

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 192
    Billets dans le blog
    1
    Par défaut
    Merci, en effet, entre temps j'avais trouvé qu'il fallait se second paramètre.

    J'ai honte

Discussions similaires

  1. [PDO] impossible d'écrire dans ma base de donnée
    Par Aornn dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/07/2015, 18h30
  2. Comment écrire dans la base de registre sans mettre Registry dans Uses ?
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 13/02/2013, 21h35
  3. Réponses: 5
    Dernier message: 20/03/2006, 15h44
  4. Réponses: 18
    Dernier message: 30/09/2005, 10h30
  5. Impossible d'inscrire un ocx dans la base de registre
    Par tomtom7 dans le forum Windows XP
    Réponses: 4
    Dernier message: 31/01/2005, 10h29

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