2009-09-18 13 views

Odpowiedz

8

Spójrz na klasy w przestrzeni nazw System.Security.AccessControl, a zwłaszcza na metodę DirectorySecurity.RemoveAccessRule.

Ponadto, jeśli usunąć wszystkie uprawnienia wtedy nie będzie mógł dodać dowolną potem z powrotem :-)

+0

Znalazłem to narzędzie przydatne do sprawdzenia, czy mój kod działał poprawnie. Pokazuje uprawnienia katalogu ustawione w hierarchii folderów. tj. tylko wtedy, gdy uprawnienia są ustawione, a nie dziedziczone - http://www.youtube.com/watch?v=aZLIioUl-5k – pfeds

2

System.IO.Directory.GetAccessControl(), a następnie edytuj zwrócony obiekt FileSecurity.

+0

Directory. –

+0

prawie taki sam ^^ Zmieniłem go teraz. – codymanix

20

Zastrzeżenie: Zdaję sobie sprawę z tego już odpowiedział i akceptowane, a naprawdę chciałem pisać to jest komentarz do zaakceptowanej odpowiedzi, ale niemożność sformatowania komentarzy zmusiła mnie do opublikowania tego jako odpowiedzi (która, technicznie rzecz biorąc, jest) ....

Szukałem tak samo i znalazłem twoje pytanie. Odpowiedź Stu pomógł mi wymyślić to rozwiązanie. (Zauważ, że interesuje mnie tylko usunięcie jawnych zabezpieczeń).

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; 
} 

I to jest oczywiście wykorzystane w następujący sposób: Budy

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

Doskonała dodatkowa odpowiedź! –

+0

Dobre rozwiązanie, ale myślę, że powinieneś go nazwać RemoveEXPLICIT, a nie implicite, ponieważ usuwasz tutaj wyraźne reguły. – md1337

+0

@ md1337 Dzięki, zredagowany wpis to odzwierciedlać. – Bryan