Отказ от ответственности: я понимаю, что на это уже был дан ответ и он принят, и я действительно хотел опубликовать это как комментарий к принятому ответу, однако неспособность форматировать комментарии вынудила меня опубликовать это ответ (который, технически, так и есть) ....
Я хотел сделать то же самое и нашел ваш вопрос. Ответ Стю помог мне придумать это решение. (Обратите внимание, что меня интересует только удаление явной защиты).
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);