2009-09-18 3 views

Répondre

8

Examinez les classes de l'espace de noms System.Security.AccessControl, et en particulier la méthode DirectorySecurity.RemoveAccessRule.

En outre, si vous supprimez toutes les autorisations, vous ne serez pas en mesure d'ajouter tout retour après :-)

+0

J'ai trouvé cet outil utile pour vérifier que mon code fonctionnait bien. Il vous montre les autorisations de répertoire définies dans la hiérarchie des dossiers. c'est-à-dire uniquement lorsque les autorisations sont définies, pas héritées - http://www.youtube.com/watch?v=aZLIioUl-5k – pfeds

2

System.IO.Directory.GetAccessControl(), puis modifiez l'objet FileSecurity renvoyé.

+0

Répertoire Budy. –

+0

presque le même ^^ Je l'ai changé maintenant. – codymanix

20

Disclaimer: Je sais que cela a déjà été répondu et accepté, et je voulais vraiment poster ceci comme un commentaire à la réponse acceptée, cependant l'incapacité de pouvoir mettre en forme des commentaires m'a forcé à signaler ceci comme réponse (qui, techniquement, il est) ....

Je cherchais à faire le même, et trouvé votre question. La réponse de Stu m'a aidé à trouver cette solution. (Notez que je ne suis intéressé que par la suppression de la sécurité explicite).

private static DirectorySecurity RemoveExplicitSecurity(DirectorySecurity directorySecurity) 
{ 
    AuthorizationRuleCollection rules = directorySecurity.GetAccessRules(true, false, typeof(System.Security.Principal.NTAccount)); 
    foreach (FileSystemAccessRule rule in rules) 
     directorySecurity.RemoveAccessRule(rule); 
    return directorySecurity; 
} 

Et ceci est évidemment utilisé comme suit:

DirectoryInfo directoryInfo = new DirectoryInfo(path); 
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl(); 
directorySecurity = RemoveExplicitSecurity(directorySecurity); 
Directory.SetAccessControl(path, directorySecurity); 
+0

Une réponse supplémentaire parfaitement valide! –

+0

Bonne solution mais je pense que vous devriez l'appeler RemoveEXPLICIT non implicite, parce que vous supprimez les règles explicites ici. – md1337

+0

@ md1337 Merci, poste édité pour refléter cela. – Bryan

Questions connexes