我在 Windows 本地服务中运行一项服务,该服务设置为自动启动。此服务经常在重启后无法启动,并且事件日志中没有错误。
该服务使用域服务帐户作为其模拟。我感觉该机器在与域控制器通信和验证登录时遇到了困难,这可能会阻止服务启动。
问题
服务帐户凭证是否缓存以供服务登录使用?如果无法验证登录,预期行为是什么?
答案1
不,在这种情况下,帐户凭据不会被缓存。
答案2
您的服务是否有任何依赖项?也许它启动得太早了,在支持网络的关键服务(如“工作站”和“网络连接”)完全初始化之前。尝试将您的服务设置为依赖于这些服务,看看是否能解决问题。
另一个更简单的方法是将服务的启动类型更改为自动(延迟启动)。这将使您的服务在启动后 1-2 分钟启动,从而为关键服务提供足够的时间提前启动。
答案3
Microsoft Windows 服务控制管理器控制所有已安装 Windows 服务的状态(即已启动、已停止、已暂停等)。默认情况下,服务控制管理器将等待 30,000 毫秒(30 秒)让服务响应。某些配置、技术限制或性能问题可能会导致服务启动并向服务控制管理器报告准备就绪的时间超过 30 秒。
通过编辑或创建 ServicesPipeTimeout DWORD 值,可以覆盖服务控制管理器超时期限,从而为服务提供更多时间启动并向服务报告准备就绪状态。
怎样做?
- 转到“开始”>“运行”> 并输入 regedit
- 导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
- 选择控制文件夹后,右键单击右侧窗格并选择新的 DWORD 值
- 将新的 DWORD 命名为:ServicesPipeTimeout
- 右键单击 ServicesPipeTimeout,然后单击修改
- 单击“十进制”,键入“180000”,然后单击“确定”
- 重启计算机
笔记:上述建议将超时时间增加到 180,000 毫秒(3 分钟),但根据您的环境,可能需要进一步增加超时时间。请记住,增加此值可能会导致服务器启动时间更长。