В С# (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);
Ответ 3
Вот отличный набор статей из CodeProject о программировании Windows ACL:
Модель контроля доступа Windows
Часть 3 данной серии демонстрирует особые методы .NET.
Ответ 4
System.IO.Directory.GetAccessControl(), а затем отредактируйте возвращаемый объект FileSecurity.