Удалить все разрешения каталога

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 4

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