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 de modifier une clé en base de registre


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut Impossible de modifier une clé en base de registre
    Désolé de ressusciter ce thread. Bon, en dépit de la doc sur MDSN et de ce qui est écrit sur ce site, je n'arrive pas écrire dans un registre. Par contre, je peux lire.

    Je ne sais pas si c'est VISTA qui me donne la vie dure. Pourtant, je suis administrateur sur mon laptop. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RegistryKey sk1;
    sk1 = Registry.CurrentUser.OpenSubKey(subKey, true);
    sk1.SetValue(KeyName.ToUpper(), Value);
    J'ai essayer de modifier les droits d'accès en écriture avec ce qui est suggéré sur MSDN et aucun succès.

    merci

  2. #2
    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
    subkey vaut quoi ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut bla bla bla
    "SOFTWARE\\X\\Y";

    Les 2 sous-clé existent déjà.

  4. #4
    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
    Quel est l'environnement du programme ? (ASP.NET ? Application de bureau ?)
    Quelle est l'exception générée ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut environnement et exception
    environnement : application bureau - Win Vista

    exception:
    "Object reference not set to an instance of an object."

  6. #6
    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
    Alala ..
    Le code suivant te donnes quoi ?
    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
     
    RegistryKey sk1;
     
    if(Registry.CurrentUser == null)
      throw new InvalidOperationException("Madness !");
     
    sk1 = Registry.CurrentUser.OpenSubKey(subKey, true);
    if(sk1 == null)
      throw new InvalidOperationException("Impossible d'ouvrir la clef");
    else
    {
      if(KeyName == null)
        throw new ArgumentNullException("KeyName");
      else
       sk1.SetValue(KeyName.ToUpper(), Value);
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut résultat: {"Impossible d'ouvrir la clef"}
    2e ligne : Registry: est-ce qu'il y a une propriété ou une membre ici car ceci est un type et il manque quelque chose. J'ai enlevé la première condition et ca donné le résultat indiqué plus haut.

  8. #8
    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
    Non c'était juste une boulette ...

    Cependant OpenSubKey ne peux renvoyer null que si subkey n'existe pas. Dans le doute, essaye d'utiliser CreateSubKey à la place pour voir ...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut pas encore 100%
    Avec CreateSubKey, ca ne lève plus d'exception. Par contre, la valeur envoyée "value" n'est pas écrite dans le registre. Voici la valeur que prend value au "run time":
    Value "@device:pnp:\\\\?\\usb#vid_064e&pid_a102&mi_00#6&25446b1f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global" object {string}

  10. #10
    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
    Value c'est un String ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut hjkhjk hkjhjh khhjkh
    absolument!

  12. #12
    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
    J'y comprend rien. Tu arrives à ouvrir la clef avec CreateSubKey mais pas à définir une valeur dedans ? peut être que le nom de la clef n'est pas valide, que vaut KeyName ? C'est peut être là le problème ...

    ps. tu n'es pas obligé de mettre un titre à tes réponses

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut
    J'ai essayé d'écrire dans un mot de 32 bits et ca ne marche pas non plus.

    Mes sous-clés se trouvent dans HKEY_LOCAL_MACHINE mais il me semble que ca ne cause pas de problème étant admin sur cette station?

    J'ai revérifié les droits de mon compte et pas de problème, j'ai le plein contrôle.

    Pour répondre à ta question Smiley, mon non de clé est "device". J'utilise "path" pour des chemins et j'ai pas de probleme en lecture. Les 2 se trouvent dans la même sous-clé.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 197
    Points : 74
    Points
    74
    Par défaut
    En ajoutant rk dans la déclaration et en changeant
    Registry.CurrentUser.CreateSubKey(subKey)[/
    pour
    rk.CreateSubKey(subKey)
    , ou la valeur de BaseRegistryKey = Registry.LocalMachine.

    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
    public bool Write(string KeyName, object Value)
    		{
     
                RegistryKey rk = baseRegistryKey;
                RegistryKey sk1;
     
                if (Registry.CurrentUser == null)
                    throw new InvalidOperationException("Madness !");
     
                sk1 = rk.CreateSubKey(subKey);//Registry.CurrentUser.CreateSubKey(subKey);
                if (sk1 == null)
                    throw new InvalidOperationException("Impossible d'ouvrir la clef");
                else
                {
                    if (KeyName == null)
                        throw new ArgumentNullException("KeyName");
                    else
                        sk1.SetValue(KeyName.ToUpper(), Value);
                }
     
                return true;
            }
    merci pour ton aide.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2010, 14h03
  2. Réponses: 5
    Dernier message: 14/06/2009, 20h59
  3. Impossible de modifier une base dorsale
    Par ionnette dans le forum Sécurité
    Réponses: 2
    Dernier message: 30/07/2008, 09h12
  4. impossible de modifier une table à cause de la clé
    Par lemok dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/06/2007, 17h58
  5. Impossible de modifier une table derrière un query ?
    Par Mihalis dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/04/2006, 11h11

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