C# Windows 服务在使用特定域帐户时不运行
本文关键字:运行 服务 Windows | 更新日期: 2023-09-27 18:36:09
我在 C# 中创建了一个基于 WCF 的简单服务。我安装了它,在本地系统帐户下它运行良好。
问题是我需要它在特定域帐户下运行,并且它不在此帐户下运行。我收到错误
Error 1068: The dependency service or group failed to start.
问题是,这个服务没有依赖项。
该帐户是本地管理员,具有"即服务登录"权限。问题似乎根本不出在我的代码上,因为我在 Main() 启动时写入事件日志,在其他任何事情发生之前 - 当我使用域帐户时,我什至没有得到该日志。
问题解决了。
查看系统事件日志,我看到该服务依赖于 DNS 客户端服务。这不是实际的依赖项,但显然当服务设置为以域用户身份登录时,它需要运行此服务。
由于某种未知原因,该服务已设置为"已禁用"。启用它并启动它解决了一切。
您必须向用户帐户授予权限。
- 获取用户的 SID(例如,使用 SysInternals 中的 PsGetSid)
- 在管理员模式下启动记事本并打开
SMSvcHost.exe.config
(在C:'Windows'Microsoft.NET'Framework'v4.0.30319
文件夹中) -
在第
system.serviceModel.activation
节中有一个子节叫net.pipe
。本节枚举标识符:本地系统、本地服务、网络服务和管理员。在本节中添加您的 sid:<add securityidentifier="your-SID-that-starts-with-S">
-
重新启动 Net.Pipe 侦听器适配器服务