【问题标题】:C# Windows service doesn't run when using a specific domain account使用特定域帐户时 C# Windows 服务不运行
【发布时间】:2016-06-08 15:14:44
【问题描述】:

我用 C# 创建了一个简单的、基于 WCF 的服务。我安装了它,在本地系统帐户下它运行良好。

问题是我需要它在一个特定的域帐户下运行,它不能在这个帐户下运行。我收到了错误

Error 1068: The dependency service or group failed to start.

问题是,这个服务没有依赖关系。

该帐户是本地管理员,具有登录即服务权限。而且问题似乎根本不在于我的代码,因为我在 Main() 启动时写入事件日志,在其他任何事情发生之前 - 我什至在使用域帐户时都没有得到该日志。

【问题讨论】:

  • 您已经在 services.msc 中验证了吗?您是否检查过服务的属性并在依赖项选项卡下确认没有依赖项?
  • 你绑定的是net.tcp吗?
  • 是的,我检查了 services.msc - 没有依赖项。我的绑定是命名管道。

标签: c# windows-services


【解决方案1】:

问题解决了。

查看系统事件日志,我看到该服务依赖于 DNS 客户端服务。这不是实际的依赖,但显然当服务设置为以域用户身份登录时,它需要运行此服务。

由于某种未知原因,该服务被设置为已禁用。启用它并启动它解决了所有问题。

【讨论】:

  • 感谢您添加解决方案,我在安装应用程序时遇到了完全相同的问题。服务没有依赖关系,但因为它们以域用户身份运行,所以如果 DNS 客户端设置为禁用,它就不会启动。我将其设置为手动,并在启动其他服务后自动启动。
【解决方案2】:

您必须向您的用户帐户授予权限。

  1. 获取用户的 SID(例如,使用 SysInternals 的 PsGetSid)
  2. 以管理员模式启动记事本并打开SMSvcHost.exe.config(在C:\Windows\Microsoft.NET\Framework\v4.0.30319文件夹中)
  3. system.serviceModel.activation 部分有一个子部分 叫net.pipe。本节列举标识符: LocalSystem、LocalService、NetworkService 和管理员。 在此部分添加您的 sid:

    <add securityidentifier="your-SID-that-starts-with-S">
    
  4. 重启 Net.Pipe 监听适配器服务

【讨论】:

  • 奇怪的是,它甚至在创建实际服务主机之前就使服务崩溃:-/
  • 尝试重新启动系统。
  • 我做过,不止一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多