0

问题是,我的 .NET Windows 服务(在 下运行NT AUTHORITY\SYSTEM)在里面的文件夹中创建一个文件,如果它试图覆盖它ProgramData,Windows 应用程序会得到一个。System.UnauthorizedAccessException当前登录的用户有一个管理员帐户,但应用程序没有启动提升(我想避免它)。

如果服务在应用程序之后启动,则该文件由 UI 应用程序创建,并且可以正常工作。是否可以让 .NET Windows 服务创建一个可以被 Windows 应用程序覆盖的文件?

4

1 回答 1

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);
于 2012-10-15T07:15:44.847 回答