错误代码0x80070005源于权限不足,需重置windows更新服务与缓存目录、修复networkservice对注册表profilelist的读取权限、赋予当前用户softwaredistribution完全控制权,并临时禁用第三方安全软件。

Windows 10系统更新卡在下载或安装阶段,反复弹出“错误代码 0x80070005 — 访问被拒绝”,说明当前用户或系统服务缺少对关键更新路径的读写权限,不是网络问题也不是磁盘空间不足,而是权限链断裂导致wuauserv、cryptSvc等服务无法正常写入SoftwareDistribution或访问注册表关键键值。
重置Windows更新服务与缓存目录
这一步直接清理服务运行时依赖的临时数据,避免旧缓存文件因权限残留持续阻塞新任务。
按下Win + X → 选择“Windows PowerShell(管理员)” → 点击“是”允许UAC提示。
依次执行以下命令,每条回车一次:
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
输入:【ren C:\Windows\SoftwareDistribution SoftwareDistribution.old】,按回车。这会强制让系统下次启动时重建全新缓存目录,旧目录里损坏的权限标记一并隔离。
输入:【ren C:\Windows\System32\catroot2 catroot2.old】,按回车。证书存储区若存在权限异常,也会触发0x80070005,重命名后系统将自动生成干净副本。
再依次执行:
net start wuauserv
net start cryptSvc
net start bits
net start msiserver
关闭窗口,重启电脑。
修复注册表ProfileList中NetworkService的读取权限
当设备加入域或应用过组策略后,NT AUTHORITY\NetworkService账户常被意外移除对HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20的读取权限,而Windows Update必须以该身份加载用户配置上下文,缺权即报0x80070005。
方法一:手动补权(推荐)
按下Win + R → 输入regedit → 回车 → 点击“是”允许UAC提示。
导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-20 → 右键该键 → “权限” → “高级” → “添加” → “选择主体” → 输入:【NT AUTHORITY\NetworkService】 → 点击“检查名称”确认 → 勾选“读取”和“查询值” → 点击“确定”。
方法二:命令行批量补权(需提前安装subinacl)
此方法不推荐普通用户使用,因subinacl已停止官方支持且易引发注册表误操作,跳过即可。
检查并赋予当前用户对SoftwareDistribution的完全控制权
即使服务重启成功,若当前登录用户对C:\Windows\SoftwareDistribution.old(或新建目录)无写入权限,后续更新仍可能失败。
第一步:右键点击“此电脑” → “属性” → “高级系统设置” → “环境变量”,确认%systemroot%指向C:\Windows。
第二步:打开文件资源管理器,进入C:\Windows\SoftwareDistribution → 右键 → “属性” → “安全”选项卡 → “高级” → 取消勾选“继承来自父级的权限” → 弹出警告时点“删除” → 返回后点“添加” → “选择主体” → 输入当前用户名(如DESKTOP-ABC\John)→ “检查名称” → 勾选“完全控制” → 确定。
第三步:勾选“用可继承的权限项替换所有子对象的权限项” → 点击“确定”。这一步必须做,否则子文件夹权限不会同步生效。
第四步:回到“服务”管理器(services.msc),找到Windows Update服务 → 右键 → “重新启动”。
临时禁用第三方安全软件
某些杀毒软件会主动拦截系统文件的修改行为,误判为恶意操作,从而阻止Windows更新正常进行。
在任务栏右下角状态区域,找到第三方杀毒软件图标 → 右键 → 选择“禁用实时保护”或“退出程序”。
进入该软件设置界面,确认其内置防火墙也已暂时关闭。
关闭所有防护功能后,打开“设置 → 更新和安全 → Windows更新”,立即点击“检查更新”。











