系统学习 Windows 学习路径:从 CMD 到 PowerShell、系统网络,再到 WSL 与 Server

sc

查询和控制 Windows 服务,配置启动类型与恢复动作。

补充说明

sc(Service Control)是服务控制管理器的命令行接口,可查询服务状态、启动/停止、修改启动类型、创建/删除服务以及配置失败恢复动作。它操作的是服务注册信息,不负责安装应用本身;排障时先用 sc query 看状态,再用 sc qc 看启动配置和可执行路径。

边界:sc stop 不会自动停止依赖该服务的其他服务,遇到依赖会报错;net stop 会连带停止依赖服务。sc delete 只是标记删除服务注册项,不删除程序文件,也不清理注册表其他键。显示名和服务名不是一回事:sc query wuauserv 用的是服务名,不是“Windows Update”。

Windows 10/11 行为一致。PowerShell 中 sc 是 Set-Content 的别名,直接敲 sc query 会报参数错误,必须写 sc.exe;PowerShell 原生的 Get-Service、Start-Service、Set-Service 更符合对象化操作,但创建服务和配置恢复动作仍常用 sc.exe。

影响范围:sc config ... start= disabled 会让服务无法自动启动,关键服务被禁用可能导致无法联网或无法开机;sc delete 会让服务从系统中消失。前置条件:管理员权限,先用 sc qc 记录原启动类型、账户和路径,停止服务并确认没有依赖。恢复方式:用 sc config 改回原启动类型;被删除的服务需要 sc create 重建或用系统还原/备份恢复。

常用示例

# 1. 列出所有正在运行的服务及其显示名
sc query

# 2. 查单个服务的状态(用服务名,不是显示名)
sc query wuauserv

# 3. 看启动类型、登录账户和可执行路径,改配置前先留底
sc qc wuauserv

# 4. 停止/启动服务(需管理员;有依赖服务时先处理依赖)
sc stop wuauserv
sc start wuauserv

# 5. 改为手动启动:注意等号后必须有空格
sc config wuauserv start= demand

# 6. 创建服务并设自动启动,binPath 含空格时整体加引号
sc create MyAgent binPath= "C:\Program Files\MyAgent\agent.exe" start= auto

# 7. 配置失败恢复:60 秒后重启,第二次 60 秒后重启,之后不操作
sc failure MyAgent reset= 86400 actions= restart/60000/restart/60000/none/0

# 8. 删除服务(先停止;只删注册项,不删程序文件)
sc delete MyAgent

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 为什么 sc config wuauserv start=disabled 会失败?正确写法是什么?
  2. sc delete 会删除服务的程序文件吗?回滚需要做什么?
  3. 在 PowerShell 里 sc query 为什么报错?应该怎么写?
答案
  1. 等号后缺少空格;应写成 sc config wuauserv start= disabled。
  2. 不会,只删除/标记服务注册项;回滚需用原路径和账户重新 sc create,或依赖备份/系统还原。
  3. sc 是 Set-Content 的别名;要写 sc.exe query。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令