我有一个 Windows 服务,它代表使用单独的前端 UI 配置服务的登录用户执行一些与网络相关的操作。 UI 和 Windows 服务使用套接字接口(interface)进行通信,即 UI 向服务发送命令,服务向 UI 发送数据进行处理/显示。这种设置已经为我们工作了多年。
最近,安全策略要求我们的 Windows 服务不能再作为 LocalSystem 运行。 ,但必须以 LocalService 的身份运行.在大多数情况下,这是一个平淡无奇的变化。然而...
Windows 服务功能的一部分是在用户指定的位置创建一个日志文件并将数据写入该日志文件,直到用户告诉它停止。如果用户在 C:\级别指定目录(例如 C:\MyLogs
),则 Windows 服务可以正常工作。但是如果用户在她的 MyDocuments 文件夹中指定了一个目录(例如 C:\Users\<username>\Documents\MyLogs
),Windows 服务将失败并返回 System.UnauthorizedAccessException这么说
Access to <location> is denied.
我花了一段时间,但我终于明白,作为 LocalService 运行的 Windows 服务无权访问登录用户的配置文件文件夹,例如 MyDocuments、AppData 等。
有解决方法吗?
我想到了一些选项,但由于我在 Windows 安全方面并不精通,我的 Google 忍者技能非常弱,因为我不确定要搜索什么。这是我的几个具体问题。我将不胜感激社区可以提供的任何指导。
最佳答案
是的,您可以向文件夹添加权限。右键单击文件夹|属性 |安全 |编辑 |添加...
在“输入对象名称”文本框中输入“本地服务”,单击“检查名称”和“确定”并修改 LOCAL SERVICE 帐户中的权限/
关于c# - LocalService 的 'Access is denied' 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641880/