更新挂起是windows更新失败的常见根源,表现为“正在准备安装”不动、重启后蓝屏回滚或报错0x80070bc2等;需检查softwaredistribution/download目录和winsxs/pending.xml确认挂起,再通过停止服务、重命名缓存目录、修复服务启动类型并强制重启来清除残留事务。
更新挂起是 windows 更新失败的常见根源,它会让系统卡在“准备安装”“正在配置更新”或重启后反复回滚的状态,后续所有新补丁都可能被阻塞。关键在于及时识别挂起痕迹,并主动清除残留事务,而不是等待自动重试或强行重复点击“安装”。
识别是否真有挂起更新
挂起更新通常表现为:设置 → Windows 更新 页面长期显示“正在准备安装”、进度条不动;重启后立刻蓝屏/回滚并报错(如 0x80070bc2、0x800705b4);事件查看器中 Application 日志出现大量 CBS 或 WindowsUpdateClient 错误,且时间集中在某次重启前后。
更直接的方法是检查缓存目录状态:
– 打开 C:\Windows\SoftwareDistribution\Download,若存在大量未命名的长串字符文件夹(如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),说明更新包已下载但未注册;
– 查看 C:\Windows\WinSxS\pending.xml(需管理员权限),若该文件非空或最后修改时间与失败更新吻合,基本可确认存在挂起操作。
强制终止挂起事务并清空缓存
这一步必须优先执行,否则任何修复都会被挂起流程覆盖。
- 以管理员身份运行命令提示符或终端
- 依次执行以下命令(每条执行成功后再输下一条):
net stop wuauserv
net stop cryptsvc
ren %windir%\SoftwareDistribution SoftwareDistribution.old
ren %windir%\System32\catroot2 catroot2.old - 注意:第二条
net stop cryptsvc必须先运行,否则后两条因文件被占用会失败
恢复服务启动属性与重启策略
挂起常伴随核心服务被设为“禁用”或“手动”,导致重启后更新进程根本无法唤醒。
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
- 继续在同一个管理员终端中输入:
sc config wuauserv start= auto
sc config cryptsvc start= auto
sc config bits start= auto
sc config trustedinstaller start= auto - 全部执行完后,用 shutdown /r /t 0 强制立即重启——不要通过开始菜单点重启,避免服务加载不全就进入更新流程
验证与兜底方案
重启进桌面后,先做两件事:
- 运行「设置 → 系统 → 疑难解答 → 其他疑难解答 → Windows 更新」,让它自动扫描服务状态、BITS 传输、注册表键值等隐藏问题
- 如果仍失败,可跳过在线更新链路,去 Microsoft Update Catalog 搜索你当前系统版本对应的 KB 编号(如 22H2 的 KB5034441),下载 .msu 文件双击安装——它绕过 wuauserv 校验,直接调用 wusa.exe 提交,对挂起环境更鲁棒
不复杂但容易忽略










