我有一个Windows服务,它代表使用单独的前端UI配置服务的登录用户执行一些与网络相关的操作。 UI和Windows服务使用套接字接口进行通信,即,UI向服务发送命令,并且服务将数据发送到UI以进行处理/显示。这种设置多年来一直适用于我们。
最近,安全政策要求我们的Windows服务无法再以LocalSystem运行,而是必须以LocalService运行。在大多数情况下,这是一个平安无事的变化。然而...
Windows服务功能的一部分是在用户指定的位置创建日志文件,并将数据写入该日志文件,直到用户告知它停止为止。如果用户在C:\级别指定目录(例如,C:\MyLogs
),则Windows服务正常工作。但是,如果用户在其MyDocuments文件夹中指定了一个目录(例如C:\Users\<username>\Documents\MyLogs
),则Windows服务将失败并显示System.UnauthorizedAccessException
访问&lt; location&gt;被拒绝。
我花了一段时间,但我终于明白,作为LocalService运行的Windows服务无权访问登录用户的个人资料文件夹,例如MyDocuments,AppData等。
是否有解决方法?
我想到了一些选项,但由于我在Windows安全性方面不够精通,我的谷歌忍者技能非常弱,因为我不确定要搜索什么。以下是我的几个具体问题。我希望社区能提供任何指导。