Intereting Posts
Вызов MailChimp API версии 3.0 с .Net Вызов метода C # с именем параметра и двоеточием Используйте FileSystemWatcher в одном файле в C # C #: добавление * содержимого * одного текстового файла в другой текстовый файл Как вы разрешаете виртуальный путь к файлу под хостом OWIN? Создайте материал из кода и назначьте его объекту Лучший способ создать Midnight DateTime в C # Как я могу воспроизводить видео RTSP H.264 в приложении Windows 8 Metro C # XAML? itextsharp: размер разделенных страниц равен размеру файла Как правильно выравнивать элементы управления в StatusStrip? Разница между long и int в C #? N-многоуровневое приложение базы данных без использования ORM, как пользовательский интерфейс определяет, что ему нужно для отображения данных? WPF TreeView восстанавливает фокус после двойного щелчка Json.Net не может сериализоваться в streamе, но работает только с тонкой сериализацией строки WPF: анимация TranslateTransform из кода

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

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

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

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

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

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

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

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