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
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut Impossible de modifier une clé en base de registre
    Bonjour,
    j'ai petit bout de code qui cré une clé en base de registre, et un peu plus tard la modifie. Plutôt qu'un long discours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RegistryKey key = Registry.CurrentUser.OpenSubKey(TEST_KEY);
    if (null == key)//si la clé n'existe pas
    {
        key = Registry.CurrentUser.CreateSubKey(TEST_KEY);//on la créé
        key.SetValue("toto", "titi"); //on ajoute une valeur
        key.SetValue("toto", "tutu");//test la modification: OK
        key.Close(); //c'est après le close que si je ré-ouvre, je ne peux plus écrire (la lecture est ok)
    }
    .....
    key = Registry.CurrentUser.OpenSubKey(TEST_KEY); //réouverture
    key.SetValue("toto", "tata");//LEVEE D'UNE ERREUR!!!
    L'erreur obtenue est:
    System.UnauthorizedAccessException was unhandled
    Message="Cannot write to the registry key."
    Source="mscorlib"
    StackTrace:
    at System.ThrowHelper.ThrowUnauthorizedAccessException(ExceptionResource resource)
    at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)
    at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)
    at MainWindowsFormsApplication.MainForm.test()
    at MainWindowsFormsApplication.MainForm..ctor()
    at MainWindowsFormsApplication.Program.Main()
    at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    at System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    J'ai alors essayé de fixer les droits sur la clé à la création avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string user = Environment.UserDomainName + "\\" + Environment.UserName;
    RegistrySecurity mSec = new RegistrySecurity();
    RegistryAccessRule rule = new RegistryAccessRule(user,
       RegistryRights.FullControl, //Tous les droits
       InheritanceFlags.ContainerInherit,
       PropagationFlags.None,
       AccessControlType.Allow);
    mSec.AddAccessRule(rule);
     
    key = Registry.CurrentUser.CreateSubKey(TEST_KEY);
    key.SetAccessControl(mSec);
    Bilan: même résultat...

    Est-ce que quelqu'un a une chtite idée d'où je fais un loupé??

    GROS Merci pour votre aide!!!!!

    PS: J'espère que je n'aurai pas du mettre ce message dans le forum Windows...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    Remarque,
    j'ai accès à la clé en contrôle total via regedit...

    Si c'était un problème de droits, que cela soit depuis VisualStudio ou regedit, le résultat devrait être le même pour peu que j'utilise la même session windows...

  3. #3
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Pour ouvrir la clef en écriture, il faut ajouter un paramètre RegistryKeyPermissionCheck :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    key = Registry.CurrentUser.OpenSubKey(TEST_KEY, RegistryKeyPermissionCheck.ReadWriteSubTree);

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut
    Autant pour moi

    Merci BEAUCOUP!!!

  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 encore des problèmes d'écriture
    Tomlev,

    Ca ne fonctionne pas pour moi. J'ai toujours des messages qui me disent que je ne peux pas écrire.

    OS : vista

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RegistryKey rk = baseRegistryKey ;
    RegistryKey sk1 = rk.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree);
    sk1.SetValue(KeyName.ToUpper(), Value);

  6. #6
    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 : 42
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par acheo Voir le message
    OS : vista
    Il faut exécuter le programme en tant qu'administrateur pour pouvoir modifier la base de registre (sauf sous la clé HKEY_CURRENT_USER)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2010, 14h03
  2. Réponses: 13
    Dernier message: 15/06/2009, 01h17
  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