2009-09-11 8 views
2

Pour mon application .net, j'ai un mécanisme qui crée un utilisateur spécial sur la machine locale. Je crée ensuite les entrées de Registre/Répertoire et affecte à cet utilisateur nouvellement créé un accès complet aux sous-clés/dossiers appropriés.Autorisations de sécurité du registre .Net - L'utilisateur avec les autorisations ne peut pas accéder au registre

Pour mon test, j'utilise Impersonation pour configurer l'environnement pour s'exécuter sous ce nouvel utilisateur, puis exécuter quelques manipulations sur les sections Registry/Directory.

J'utilise le code suivant pour créer ma section de registre (Exécuter en tant qu'administrateur):

 RegistryAccessRule rule = new RegistryAccessRule(LOGON_USER_NAME, RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow); 
     RegistrySecurity security = new RegistrySecurity(); 
     security.AddAccessRule(rule); 

     //Create Test Sub Key in Registry with permissions for the MicaUser 
     root = Registry.LocalMachine.CreateSubKey(SUB_KEY_ROOT, RegistryKeyPermissionCheck.ReadWriteSubTree); 
     root.SetAccessControl(security); 

     RegistryKey key = root.CreateSubKey(SUB_KEY_DELETE, RegistryKeyPermissionCheck.ReadWriteSubTree); 

     root.Close(); 
     key.Close(); 

Puis, quand je tente de manipuler le registre sous un utilisateur personnifié:

RegistryKey root = Registry.LocalMachine .OpenSubKey (SUB_KEY_ROOT); root.DeleteSubKeyTree (SUB_KEY_DELETE);

Cela provoque une exception d'autorisations "Impossible d'écrire dans la clé de Registre".

La manipulation de répertoire est correcte et fonctionne comme prévu, mais les autorisations de Registre échouent. J'ai vérifié le registre et l'utilisateur a été accordé des autorisations complètes à la sous-clé.

Erreur: « Impossible d'écrire la clé de Registre »

REMARQUE: La manipulation fonctionne de registre bien en vertu d'un utilisateur Admin, de sorte que le code est correct.

Des pensées?

Cordialement

Tris

Répondre

1

Mise à jour:

J'ai compris quel était le problème en ce qui concerne l'accès aux différents sous-éléments, les deux répertoires et registres. Il semble que la liste de contrôle d'accès s'applique UNIQUEMENT aux éléments enfants et non à l'élément racine. Le problème ci-dessous est une question sur la façon de résoudre ce problème:

C# - Windows ACL - Applying Inherited Permissions

Questions connexes