Как изменить разрешения на файл с помощью 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.