我们有一个在 Windows Server 2008 R2 64 位上运行的自定义服务。它的启动类型为“自动”。但是,重新启动后,该服务不会自动启动。如果我们从服务控制面板手动启动它,它就会启动。这可能导致哪些原因,我该如何调试它?我检查了事件日志,没有发现任何特殊情况。
答案1
您是否尝试过将启动类型设置为“自动(延迟启动)”?该服务是否有依赖项?
答案2
您是否检查过分配给该服务的用户帐户是否具有足够的权限来运行该服务?
可以找到有关 Windows 服务的用户帐户和权限的良好解释这里
答案3
分解一下。
授予服务用户管理员权限。它运行了吗?
然后将其拨回。
确保添加/授予用户登录为服务权限。
答案4
Microsoft Windows 服务控制管理器控制所有已安装 Windows 服务的状态(即已启动、已停止、已暂停等)。默认情况下,服务控制管理器将等待 30,000 毫秒(30 秒)让服务响应。某些配置、技术限制或性能问题可能会导致服务启动并向服务控制管理器报告准备就绪的时间超过 30 秒。
通过编辑或创建 ServicesPipeTimeout DWORD 值,可以覆盖服务控制管理器超时期限,从而为服务提供更多时间启动并向服务报告准备就绪状态。
怎样做?
- 转到“开始”>“运行”> 并输入 regedit
- 导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
- 选择控制文件夹后,右键单击右侧窗格并选择新的 DWORD 值
- 将新的 DWORD 命名为:ServicesPipeTimeout
- 右键单击 ServicesPipeTimeout,然后单击修改
- 单击“十进制”,键入“180000”,然后单击“确定”
- 重启计算机
笔记:上述建议将超时时间增加到 180,000 毫秒(3 分钟),但根据您的环境,可能需要进一步增加超时时间。请记住,增加此值可能会导致服务器启动时间更长。