如何在系统启动时让Windows服务变成"Running"
How to make Windows service become "Running" when the system boots
我知道这个问题已经得到解答 here 但我有一个更具体的问题。我按照建议添加
serviceInstaller1.StartType = ServiceStartMode.Automatic;
serviceInstaller1.DelayedAutoStart = true;
事实上,我可以确认在安装后我看到我的服务 Startup Type
等于 Automatic (Delayed Start)
。但是我重新启动了我的机器,它不像其他服务那样 Status
等于 Running
。我试过没有 serviceInstaller1.DelayedAutoStart = true;
和同样的问题。我想知道我的 Log On As
是否需要是域帐户以外的其他帐户。或者还有什么问题?
首先,我会检查服务是否以 logon = SYSTEM 开头。如果可行,根据我的经验(大型企业环境),最常见的原因是服务应该使用的用户帐户 运行 没有权限 "logon as service"。在 Windows 安全事件日志中查找登录错误。根据您的环境,您可以使用 GPO 来启用此权限,或者如果您的 Windows 环境允许,您也可以自行设置(通过本地安全策略)。
或者您的服务可能在 OnStart() 中崩溃,但这也可以(正如 Brien 和 Shetty 假设的那样)通常在事件日志(应用程序事件日志)中看到。
我知道这个问题已经得到解答 here 但我有一个更具体的问题。我按照建议添加
serviceInstaller1.StartType = ServiceStartMode.Automatic;
serviceInstaller1.DelayedAutoStart = true;
事实上,我可以确认在安装后我看到我的服务 Startup Type
等于 Automatic (Delayed Start)
。但是我重新启动了我的机器,它不像其他服务那样 Status
等于 Running
。我试过没有 serviceInstaller1.DelayedAutoStart = true;
和同样的问题。我想知道我的 Log On As
是否需要是域帐户以外的其他帐户。或者还有什么问题?
首先,我会检查服务是否以 logon = SYSTEM 开头。如果可行,根据我的经验(大型企业环境),最常见的原因是服务应该使用的用户帐户 运行 没有权限 "logon as service"。在 Windows 安全事件日志中查找登录错误。根据您的环境,您可以使用 GPO 来启用此权限,或者如果您的 Windows 环境允许,您也可以自行设置(通过本地安全策略)。
或者您的服务可能在 OnStart() 中崩溃,但这也可以(正如 Brien 和 Shetty 假设的那样)通常在事件日志(应用程序事件日志)中看到。