Приложение не может переписать файл, сохраненный службой Windows

Проблема в том, что мой.NET Windows Service (работает под NT AUTHORITY\SYSTEM) создает файл в папке внутри ProgramDataи приложение Windows получает System.UnauthorizedAccessException если он пытается перезаписать его. В настоящее время вошедший в систему пользователь имеет учетную запись администратора, но приложение не запускается с повышенными правами (и я хотел бы избежать этого).

Если служба запускается после приложения, то файл создается приложением пользовательского интерфейса и работает нормально. Можно ли заставить.NET Windows Service создать файл, который может быть перезаписан приложением Windows?

1 ответ

Решение

Речь идет о разрешениях файла. Вам нужно добавить запись записи для пользователей, которых вы хотите иметь возможность запускать приложение. Посмотрите эту статью MSDN о том, как ее установить.

Ключевая часть:

// Get a FileSecurity object that represents the 
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);

// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
Другие вопросы по тегам