LocalService 的“访问被拒绝”的解决方法
Posted
技术标签:
【中文标题】LocalService 的“访问被拒绝”的解决方法【英文标题】:Workaround for 'Access is denied' for LocalService 【发布时间】:2018-01-20 08:46:36 【问题描述】:我有一个 Windows 服务,它代表使用单独的前端 UI 配置服务的登录用户执行一些与网络相关的操作。 UI 和 Windows 服务使用套接字接口进行通信,即 UI 向服务发送命令,服务向 UI 发送数据进行处理/显示。这种设置已经为我们工作了多年。
最近,安全策略要求我们的 Windows 服务不能再以LocalSystem 运行,而必须以LocalService 运行。在大多数情况下,这是一个平淡无奇的变化。不过……
Windows 服务功能的一部分是在用户指定的位置创建一个日志文件并将数据写入该日志文件,直到用户告诉它停止。如果用户在 C:\ 级别指定目录(例如,C:\MyLogs
),则 Windows 服务可以正常工作。但是,如果用户在她的 MyDocuments 文件夹中指定了一个目录(例如,C:\Users\<username>\Documents\MyLogs
),Windows 服务将失败并显示 System.UnauthorizedAccessException 表示
对
的访问被拒绝。
我花了一段时间,但我终于明白,作为 LocalService 运行的 Windows 服务无权访问已登录用户的配置文件文件夹,例如 MyDocuments、AppData 等。
有解决办法吗?
我想到了几个选项,但由于我不精通 Windows 安全性,我的 Google 忍者技能非常薄弱,因为我不确定要搜索什么。这是我的几个具体问题。我将不胜感激社区可以提供的任何指导。
-
Windows 服务有没有办法模拟登录的用户帐户,以便它可以创建目录和文件,就好像用户直接进行操作一样?
是否可以向用户的配置文件文件夹添加权限,以便 LocalService 帐户可以在那里创建目录和文件?
【问题讨论】:
【参考方案1】:是的,您可以向文件夹添加权限。右键单击文件夹|属性 |安全 |编辑 |添加...
在“输入对象名称”文本框中输入“本地服务”,单击“检查名称”和“确定”并修改本地服务帐户中的权限/
【讨论】:
如果 Windows 没有使用英语区域设置,而不是Local service
,必须键入本地语言的等效项(而且字符串区分大小写)。或者,您可以单击“高级”,然后从列表中选择正确的一项。以上是关于LocalService 的“访问被拒绝”的解决方法的主要内容,如果未能解决你的问题,请参考以下文章