Windows 服务设为"自动(延迟启动)"后开机不启动,是怎么回事?

问题

公司老服务器或办公电脑(不少小公司还有 Win7、Server 2008 的机器在跑)上装了个业务服务——备份客户端、监控程序、ERP 的接口服务之类。为了不影响开机速度,把它设成了"自动(延迟启动)"。结果重启后发现服务压根没起来,手动点一下"启动"又正常。明明设的是自动,为什么开机不启动?

原因

先说结论:绝大多数情况不是设置错了,而是下面几个坑:

  1. “延迟启动"是真延迟。它的机制是开机后等系统"闲下来”(一般 2 分钟左右)才拉起服务。很多人开机一分钟内去看,服务当然还没动——再等等它自己就起来了。
  2. 依赖的服务没起来。这个服务可能依赖别的服务(比如数据库、RPC),依赖链上任何一个没就绪,系统会直接放弃拉它。
  3. 服务账户问题。服务用指定账户登录运行,密码过期、账户被禁、没分配"作为服务登录"权限,开机自启就会失败;而手动启动时用的是你当前登录的管理员身份,反而能成。
  4. 上次异常关机。断电、死机后强制重启,服务控制管理器状态错乱,偶发不起。

排查步骤

第一步,先等够 3~5 分钟再下结论。如果服务迟到了但能自己起来,属于正常机制,不用处理;赶时间的场景直接把延迟改回普通"自动"。

第二步,看事件查看器:右键"计算机"→管理→事件查看器→Windows 日志→系统,筛选来源为"服务控制管理器"的事件。7000、7001、7009、7038 这些编号的事件会把"谁依赖谁、谁超时、账户登录失败"写得明明白白,照着报错处理就行。

第三步,在 services.msc 里找到这个服务,点开"依赖关系"选项卡,逐个确认它依赖的服务是否都在运行;有没起来的,先解决上游。

第四步,看"登录"选项卡:如果服务用的是专用账户,核对密码是否过期、账户是否被禁用。

第五步,配置失败自愈:切到"恢复"选项卡,把"第一次失败"设为"重新启动服务",这样偶发的启动失败也能自动兜底一次。

预防

  • 关键业务服务不要依赖"延迟启动",直接设"自动",开机速度那点代价远小于业务停了半天没人发现。
  • “恢复"选项卡的三次失败都配上"重新启动服务”,让它有自愈能力。
  • 服务专用账户改过密码后,记得服务这边同步更新。

数据类的服务(备份、同步)如果经常"开机没起来",往往一停就是好几天没人察觉,等发现时备份早就断了。这类事拿不准可以找贵州诚鑫致达科技看看——我们平时就是给企业当"数据管家"的,这种巡检是日常活。

来源:https://ask.csdn.net/questions/232407