Приложение не может переписать файл, сохраненный службой 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);