2010-05-09 3 views
8

J'utilise le code simple suivant pour ajouter le contrôle total à un répertoire, mais cela ne fonctionne pas.Comment définir un contrôle total sur un répertoire?

 String dir_name = @"folder_full_path"; 
     DirectorySecurity dir_security = Directory.GetAccessControl(dir_name); 
     FileSystemAccessRule access_rule = new FileSystemAccessRule(@"AccountName", 
      FileSystemRights.FullControl, AccessControlType.Allow); 
     dSecurity.AddAccessRule(access_rule); 
     Directory.SetAccessControl(dir_name, dir_security); 

Mais ce code ne définissez autorisations spéciales dans le dossier cible. Ce code est presque le même que le MSDN sample. Je me gratte la tête pour une explication raisonnable ... J'espère que quelqu'un pourrait me faire la lumière.

Merci beaucoup.

+4

si vous avez utilisé le constructeur 5 paramètres pour FileSystemAccessRule à la place? http://msdn.microsoft.com/en-us/library/sfe70whw.aspx –

+3

Merci Ben. Je pourrais le faire avec le constructeur à 5 paramètres maintenant. Mais je ne sais pas pourquoi le constructeur à 3 paramètres existe si ça ne marche pas? – smwikipedia

Répondre

-3

:) Tournez-vous.

  • Créez un répertoire.

  • Affecter des autorisations.

  • Lire DirectorySecurity ACL et vérifiez dans le débogueur à quoi il ressemble;)

Voila.

13

Après une ingénierie inverse des règles ACL originales je l'ai eu à travailler avec le code suivant:

IdentityReference everybodyIdentity = new SecurityIdentifier(WellKnownSidType.WorldSid, null); 

FileSystemAccessRule rule = new FileSystemAccessRule(
    everybodyIdentity, 
    FileSystemRights.FullControl, 
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
    PropagationFlags.None, 
    AccessControlType.Allow); 

mai il aide à tout autre visiteur :)

+0

Merci, je crois que c'est la version à 5 paramètres. – smwikipedia

+0

Fonctionne parfaitement, merci! – Despertar

+1

+1 pour WellKnownSidType. J'ai besoin du compte Administrateur dans mon programme. – 010110110101

Questions connexes