Windows 服务启动后自动停止?依赖、权限与崩溃的定位思路
某个 Windows 服务点击『启动』后秒变『已停止』,事件日志只留下一句『服务在特定时间停止』,没有详细信息。这类『启动后自动停止』通常源于依赖缺失、账户权限或程序自身崩溃,按下面步骤排查,避免反复手动启动的无效循环。
一、查看服务依赖与登录身份
- 打开 services.msc,双击该服务,切到『依存关系』查看它依赖哪些服务。
- 确认所依赖服务均处于『正在运行』,否则先启动依赖项。
- 切到『登录』选项卡,确认登录身份(本地系统/指定账户)正确,指定账户需有『作为服务登录』权限。
二、从事件查看器定位崩溃原因
- 打开 eventvwr.msc,展开『Windows 日志—系统』,按来源筛选该服务名。
- 若出现『应用程序错误』,记录故障模块与异常码,常见 0xc0000005 为内存访问违规。
- 查看『应用程序』日志中该服务对应程序自身的报错堆栈。
三、用命令行获取详细错误
- 管理员 CMD 执行 sc queryex 服务名 查看状态与 PID。
- 执行 sc qc 服务名 查看二进制路径、启动类型与失败动作。
- 尝试 服务程序路径.exe 直接运行,观察控制台报错(很多服务以控制台方式会打印原因)。
四、重建或修复服务
- 若服务程序文件损坏,重新安装对应软件以修复二进制。
- 必要时用 sc delete 服务名 删除后用 sc create 重建,注意 binPath 与 obj= 参数。
- 设置『恢复』选项卡,将第一次失败设为『重新启动服务』,避免反复手动干预。
技术总结:服务启动即停止,先看依赖与登录账户,再从事件日志拿崩溃模块,最后用 sc 命令核实配置或直接运行程序观察报错;多数情况是依赖未起或账户缺权限。