Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

c# удалить разрешения пользователя

Нужно на папку программно удалять разрешения определенного пользователя. Нашел пример на MSDN. Вот метод оттуда для удаления разрешений:
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType) { DirectoryInfo dInfo = new DirectoryInfo(FileName);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account, Rights, ControlType));
dInfo.SetAccessControl(dSecurity); }
Проблема в том, что он хоть и удаляет разрешения сам пользователь в списке контроля доступом остается. Только без разрешений. А мне нужно удалить его полностью. Как это сделать?


Ответ

Вот и решение:
DirectoryInfo dirInfo = new DirectoryInfo(path); DirectorySecurity Rights = dirInfo.GetAccessControl(AccessControlSections.Access); //Только для папок Rights.RemoveAccessRuleAll(new FileSystemAccessRule(_user.Name, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow)); //Только для файлов Rights.RemoveAccessRuleAll(new FileSystemAccessRule(_user.Name, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow)); //Только для этой папки Rights.RemoveAccessRuleAll(new FileSystemAccessRule(_user.Name, FileSystemRights.FullControl, InheritanceFlags.None, PropagationFlags.InheritOnly, AccessControlType.Allow)); dirInfo.SetAccessControl(Rights);

Комментариев нет:

Отправить комментарий