LocalService的“访问被拒绝”的解决方法

时间:2017-08-11 18:41:12

标签: c# .net windows security windows-services

我有一个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安全性方面不够精通,我的谷歌忍者技能非常弱,因为我不确定要搜索什么。以下是我的几个具体问题。我希望社区能提供任何指导。

  1. Windows服务是否有办法模拟已登录的用户帐户,以便它可以创建目录和文件,就像用户直接进行操作一样?
  2. 是否可以向用户的个人资料文件夹添加权限,以便LocalService帐户可以在那里创建目录和文件?

0 个答案:

没有答案
相关问题