使用特定域帐户时,C# Windows 服务不会 运行
C# Windows service doesn't run when using a specific domain account
我用 C# 创建了一个简单的、基于 WCF 的服务。我安装了它,并且在本地系统帐户下 运行 没问题。
问题是我需要在特定的域帐户下运行,而在该帐户下没有运行。我收到错误
Error 1068: The dependency service or group failed to start.
事实是,此服务没有依赖项。
该帐户是本地管理员并且具有作为服务登录的权限。而且问题似乎根本不在我的代码中,因为我在 Main() 启动时写入事件日志,然后再发生任何其他事情 - 而且当我使用域帐户时我什至没有得到该日志。
您必须授予您的用户帐户权限。
- 获取用户的 SID(例如,使用来自 SysInternals 的 PsGetSid)
- 以管理员模式启动记事本并打开
SMSvcHost.exe.config
(在 C:\Windows\Microsoft.NET\Framework\v4.0.30319
文件夹中)
在第 system.serviceModel.activation
节中有一个小节
称为 net.pipe
。本节列举了标识符:
LocalSystem、LocalService、NetworkService 和管理员。
在此部分添加您的 sid:
<add securityidentifier="your-SID-that-starts-with-S">
重新启动 Net.Pipe 侦听器适配器服务
问题已解决。
查看系统事件日志,我看到该服务依赖于 DNS 客户端服务。这不是实际的依赖关系,但显然当服务设置为以域用户身份登录时,它需要此服务 运行.
由于某些未知原因,该服务被设置为禁用。启用它并启动它解决了所有问题。
我用 C# 创建了一个简单的、基于 WCF 的服务。我安装了它,并且在本地系统帐户下 运行 没问题。
问题是我需要在特定的域帐户下运行,而在该帐户下没有运行。我收到错误
Error 1068: The dependency service or group failed to start.
事实是,此服务没有依赖项。
该帐户是本地管理员并且具有作为服务登录的权限。而且问题似乎根本不在我的代码中,因为我在 Main() 启动时写入事件日志,然后再发生任何其他事情 - 而且当我使用域帐户时我什至没有得到该日志。
您必须授予您的用户帐户权限。
- 获取用户的 SID(例如,使用来自 SysInternals 的 PsGetSid)
- 以管理员模式启动记事本并打开
SMSvcHost.exe.config
(在C:\Windows\Microsoft.NET\Framework\v4.0.30319
文件夹中) 在第
system.serviceModel.activation
节中有一个小节 称为net.pipe
。本节列举了标识符: LocalSystem、LocalService、NetworkService 和管理员。 在此部分添加您的 sid:<add securityidentifier="your-SID-that-starts-with-S">
重新启动 Net.Pipe 侦听器适配器服务
问题已解决。
查看系统事件日志,我看到该服务依赖于 DNS 客户端服务。这不是实际的依赖关系,但显然当服务设置为以域用户身份登录时,它需要此服务 运行.
由于某些未知原因,该服务被设置为禁用。启用它并启动它解决了所有问题。