Удалить все разрешения каталога - PullRequest
11 голосов
/ 18 сентября 2009

В C # (2.0) Как удалить все разрешения для каталога, чтобы я мог ограничить доступ. Я буду добавлять доступ обратно к ограниченному кругу пользователей.

Ответы [ 4 ]

21 голосов
/ 10 ноября 2010

Отказ от ответственности: я понимаю, что на это уже был дан ответ и он принят, и я действительно хотел опубликовать это как комментарий к принятому ответу, однако неспособность форматировать комментарии вынудила меня опубликовать это ответ (который, технически, так и есть) ....

Я хотел сделать то же самое и нашел ваш вопрос. Ответ Стю помог мне придумать это решение. (Обратите внимание, что меня интересует только удаление явной защиты).

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

И это, очевидно, используется следующим образом:

DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity = RemoveExplicitSecurity(directorySecurity);
Directory.SetAccessControl(path, directorySecurity);
8 голосов
/ 18 сентября 2009

Посмотрите на классы в System.Security.AccessControl пространстве имен, и особенно DirectorySecurity.RemoveAccessRule метод.

Кроме того, если вы удалите все разрешения, вы не сможете добавить их обратно: -)

3 голосов
/ 18 сентября 2009

Вот большой набор статей из CodeProject о программировании Windows ACL:

Модель управления доступом Windows

Часть 3 серии показывает специфические методы .NET.

2 голосов
/ 18 сентября 2009

System.IO.Directory.GetAccessControl (), а затем отредактируйте возвращенный объект FileSecurity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...