Почему приложение .NET не может перезаписать файл, если пользователь является администратором? - PullRequest
0 голосов
/ 07 мая 2019

Мое приложение WPF загружает и кэширует файлы в каталог C:\ProgramData\CompanyName\ProductName\Data\.

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

Почему у меня нет прав на запись, когда я также являюсь администратором?
На снимке экрана показаны права доступа к файлу, который я не могу перезаписать.

Account Settings

Я понимаю, что мне нужно повысить уровень процесса, чтобы выполнить задачу 'admin' (, как описано здесь ), но, учитывая, что другой пользователь был администратором (и я тоже), и «Владелец» файла - «Администратор» - почему у меня нет разрешения на запись в файл, где Владелец находится в той же группе?Почему бы нам не использовать одни и те же привилегии?

1 Ответ

1 голос
/ 07 мая 2019

После загрузки и сохранения файла вы можете установить полный доступ для всех пользователей (или любой другой соответствующей группы) с помощью кода, подобного следующему:

var fileSecurity = File.GetAccessControl(path);

fileSecurity.AddAccessRule(
    new FileSystemAccessRule(
        new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null),
        FileSystemRights.FullControl,
        AccessControlType.Allow));

File.SetAccessControl(path, fileSecurity);
...