Windows 服务启动不了怎么办?
Windows 服务起不来,原因往往藏在系统日志里。从命令行查看服务状态和启动类型、读取错误记录,再把它设成自动并重新启动。
快速开始
Windows 服务无法启动,可能是启动类型被禁用、依赖项缺失,也可能是登录失败。这篇指南用命令行一步步缩小范围,再用两个改动解决最常见的原因。
症状
查看服务的运行状态与启动类型
服务起不来,通常是因为它处于已停止、已禁用,或者被设成手动却没人触发。把所有配置为自动启动的服务列出来,一眼就能看出你的服务是在运行、已停止,还是压根没出现在列表里(没出现说明它被禁用或设成了手动)。如果显示为自动却处于停止状态,说明 Windows 已经尝试启动过但放弃了——这是故障,而不是有意为之的配置。
用 Get-Service 按 StartType 过滤,查看所有设为自动启动的服务。
$ Get-Service | Where-Object StartType -eq Automatic | Select-Object Name, DisplayName, Status查看服务记录下的错误
系统日志会记下服务控制管理器启动失败的原因——文件缺失、登录失败、依赖项没准备好。按 Level=2(错误)筛选并倒序查看,能直接看到确切原因,不用靠猜。日志消息一般会点明是哪个服务、卡在什么条件上。
不打开事件查看器,直接查询 System 或 Application 日志中的最新错误。
$ wevtutil qe System /q:"*[System[(Level=2)]]" /c:20 /rd:true /f:text把服务设为自动启动
如果服务被设为“已禁用”,无论你怎么点,Windows 都不会启动它。把启动类型改成“自动”就能解除这个阻碍。如果本来就是自动,就别动——这一步只适用于确实被禁用、或者本该自启却被卡在手动状态的服务。
用 Set-Service 设置服务开机自启、按需启动或永久禁用。
$ Set-Service -Name spooler -StartupType Disabled :: also valid: Manual, Automatic, AutomaticDelayedStart▾ 撤销
$ Set-Service -Name spooler -StartupType Automatic启动服务并确认它能保持运行
改完启动类型后,启动服务并立刻查看它的状态。如果显示“正在运行”,说明修好了。如果几秒内又停了,那问题就不在启动类型——回头再看诊断步骤里那条日志,因为服务是在自身启动过程中失败的。
在 PowerShell 中停止、启动、重启服务,一行命令替代 services.msc 或 net stop/start。
$ Restart-Service -Name wuauserv -Force
Get-Service -Name wuauserv | Select-Object Name, Status, StartType▾ 撤销
$ Start-Service -Name wuauserv如何确认已解决
服务显示 Status = Running、StartType = Automatic,并且在再次重启服务或重启系统后依然保持这个状态。
一键全部撤销
上面每一条命令都可以撤销。按此顺序执行即可全部还原。
$ Start-Service -Name wuauserv
Set-Service -Name spooler -StartupType Automatic执行前请先确认——部分步骤之间可能并非相互独立。
来源
- Get-Service依据: Get-Service returns ServiceController objects for all services (no arguments = every service), which can be piped to Where-Object for filtering by properties such as Status.
- ServiceController.StartType Property依据: Documents the StartType property of ServiceController objects (the type returned by Get-Service) and the ServiceStartType enumeration values Automatic, Manual and Disabled.
- wevtutil - Windows Commands依据: Documents wevtutil, including the query-events (qe) command with /q XPath filter, /c count, /rd reverse direction and /f text format.
- Set-Service依据: Documents the -StartupType parameter with values Automatic, Manual, Disabled (and AutomaticDelayedStart) for controlling when a service starts.
- Set-Service — Configure a Windows service依据: Syntax shows Set-Service -Name <string> -StartupType {Automatic | Manual | Disabled} for changing a service's start mode.
- Restart-Service - SS64依据: Shows Restart-Service usage and pipeline patterns with Get-Service.
- Restart-Service依据: Documents Restart-Service including -Force for dependent services.
最后验证: 2026-09-22