Как изменить разрешения на файл с помощью C#


Бывает, что у вас на компьютере имеются не удаляемые файлы или папки. Пишется что-то типа: Вам необходимо разрешение на выполнение этой операции, запросите разрешение на изменение этого файла. Причем самое интересное, что разрешение надо запрашивать у самого себя:



Кстати, такие файлы и папки остались после работы над одним интересным проектом по безопасности, в котором необходимо было создать защиту от копирования и удаления некоторых файлов. Но мы отвлеклись. Как же такие разблокировать файлы?

Щёлкнем правой кнопкой мыши, выберем «Свойства», посмотрим на вкладку «Безопасность». И вот что мы видим:



Есть некая группа пользователей «Все», которой запрещено делать что-либо с файлом. Если мы нажмём «Изменить» и переставим флажки (точнее, уберём запрещающие и поставим разрешающие), то файл можно будет спокойно удалить.



Но же программисты, верно? С помощью своей программы на C#, которая умещается буквально в несколько строчек:

String filename = @"C:\Users\Tanya\Desktop\prot\test.txt";
var account = new NTAccount("Все");
FileSecurity fSecurity = File.GetAccessControl(filename);
fSecurity.RemoveAccessRule(new FileSystemAccessRule(account, FileSystemRights.FullControl, AccessControlType.Deny));
fSecurity.AddAccessRule(new FileSystemAccessRule(account, FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl(filename, fSecurity);
мы делаем все то же самое. Если же запрещены работы с файлом для текущего пользователя, то надо заменить пару строчек:

WindowsIdentity identity = WindowsIdentity.GetCurrent();
var account = new NTAccount(identity.Name);
Кстати, при работе над тем проектом узнал много нового насчёт политики безопасности Windows: не только как менять права на файлы (атрибуты), но и менять владельца, создавать пользователя, работать с локальным пользователем, запускать программу от другого пользователя и ещё много интересного. Как обычно, если будут время, то в следующих заметках расскажу об этом.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, windows, политика безопасности, файл




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 16. Конвертация строк в числа на C#
Заливка и извлечение изображений из базы sqlite на C#
Урок 10. Получение результатов от параллельных задач C#