错误代码0x80070005源于Windows Update进程权限不足,主因是TrustedInstaller或svchost.exe对SoftwareDistribution目录及WindowsUpdate注册表项无读写权,需以管理员身份运行故障排除器、重置权限、检查TrustedInstaller服务状态,或改用DISM安装补丁。
错误代码 0x80070005 表示“访问被拒绝”,根本原因不是系统更新组件坏了,而是 windows update 进程(trustedinstaller 或 svchost.exe)没有足够权限读写关键目录或注册表项——尤其是 c:\windows\softwaredistribution 和 hkey_local_machine\software\microsoft\windows\currentversion\windowsupdate。
用管理员权限运行 Windows Update 故障排除器
这是最常被跳过的一步:系统自带的故障排除器在非管理员上下文里只能做表面检查,无法修复权限问题。
- 按
Win + I打开设置 →更新和安全→疑难解答→其他疑难解答 - 找到
Windows 更新,点击运行疑难解答—— 但必须右键该快捷方式,选择“以管理员身份运行”(若从设置里点,它默认不提权) - 它会尝试重置
SoftwareDistribution和catroot2文件夹权限,并重启相关服务;失败时会在日志里明确提示哪项 ACL 修改被拒绝
手动重置 SoftwareDistribution 权限(最常见卡点)
C:\Windows\SoftwareDistribution 被锁死是 0x80070005 的头号诱因,尤其当你之前手动删过里面文件、或用第三方清理工具碰过它。
- 先停止服务:
net stop wuauserv、net stop cryptSvc、net stop bits、net stop msiserver - 用管理员 CMD 运行:
takeown /f C:\Windows\SoftwareDistribution /r /d y(获取所有权) - 再运行:
icacls C:\Windows\SoftwareDistribution /grant *S-1-5-32-573:F /t(授予“本地服务”完全控制,这是wuauserv实际运行身份) - 别用
Administrators:F—— 这反而可能触发 UAC 拦截,因为 Windows Update 不以管理员身份运行
检查 Windows Modules Installer 服务是否被禁用或权限异常
TrustedInstaller 是真正执行更新安装的进程,如果它的服务被设为禁用、或其注册表启动类型被改写,0x80070005 会在下载完成后立刻爆发。
- 运行
services.msc,确认Windows Modules Installer状态为“正在运行”,启动类型为“手动”(不是“禁用”) - 检查注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TrustedInstaller,确保Start值为3(手动) - 如果该服务权限被改过,用
sc sdshow trustedinstaller查看当前 DACL,正常应包含NT SERVICE\TrustedInstaller和NT AUTHORITY\SYSTEM的完整访问权限
绕过权限问题的临时方案:用 DISM 替代部分更新操作
当权限修复反复失败,说明系统底层 ACL 已混乱,此时硬修风险高。可跳过 Windows Update 机制,直接用 DISM 安装已下载的补丁包(.cab 文件)。
- 从
C:\Windows\SoftwareDistribution\Download中找到最新日期的子文件夹,里面通常有update.mum和对应.cab - 用管理员 CMD 运行:
dism /online /add-package /packagepath:"X:\path\to\package.cab" - DISM 由
TrustedInstaller直接调用,不经过 Windows Update 的权限校验链,成功率更高 - 注意:此法仅适用于已成功下载但无法安装的补丁,不能解决下载阶段的
0x80070005
真正棘手的是那些 ACL 被第三方安全软件深度篡改的案例——比如某国产杀软把 catroot2 注册表键设为只读并隐藏继承权限,这种问题不会出现在常规排查步骤里,得用 procmon 抓 wuauclt.exe 的 ACCESS DENIED 调用栈才能定位到具体路径。


















