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

Моя программа для копирования некоторых каталогов, с подкаталогами и файлами с сервера на локальный компьютер. Мне нужно, чтобы каждый локальный пользователь мог его изменить (отредактировать / удалить / удалить / переименовать). Но теперь это может сделать только владелец. Как я могу установить необходимые разрешения для скопированного каталога и его дочерних элементов? Я пытаюсь такой код:

String account = Path.Combine(Environment.MachineName, "Users");
FileSystemRights rights = FileSystemRights.FullControl;
AccessControlType controlType = AccessControlType.Allow;
DirectorySecurity security = local_commonDir.GetAccessControl(AccessControlSections.Access);
FileSystemAccessRule rule = new FileSystemAccessRule(account, rights, controlType);
security.AddAccessRule(rule);
local_commonDir.SetAccessControl(security);

Но я получил исключение:

Некоторые или ссылки на свойства не могут быть преобразованы.

Если я добавлю отсутствующие элементы управления доступом, то ошибок нет. Я думаю, что получаю ошибку, потому что "Пользователи" уже существуют. Как мне изменить существующие права?

1 ответ

Решение

Я нашел решение:

WindowsIdentity id = WindowsIdentity.GetCurrent();
var sid = new SecurityIdentifier(WellKnownSidType.AccountDomainUsersSid, id.User.AccountDomainSid);
var security = dir.GetAccessControl();
var rule = new FileSystemAccessRule(sid,
    FileSystemRights.FullControl,
    InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
    PropagationFlags.None,
    AccessControlType.Allow);
security.AddAccessRule(rule);
dir.SetAccessControl(security);
Другие вопросы по тегам