使用特定域帐户时,C#Windows服务无法运行

时间:2016-02-25 17:29:02

标签: c# windows-services

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

问题是我需要在特定的域帐户下运行它,并且它不会在此帐户下运行。我收到了错误

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

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

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

2 个答案:

答案 0 :(得分:3)

问题解决了。

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

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

答案 1 :(得分:1)

您必须为您的用户帐户授予权利。

  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和Administrators。 在此部分添加您的sid:

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