操作环境:Windows 10,PowerShell(管理员权限)
目标:彻底、永久禁止系统自动更新
一、背景
Windows 10 的自动更新机制非常顽固,微软在多个层面都做了保护:
- 服务层:
wuauserv(Windows Update)+UsoSvc(Update Orchestrator) - 策略层:注册表 AU 策略
- 计划任务层:
\Microsoft\Windows\UpdateOrchestrator\*下十余个任务 - 权限保护:部分计划任务文件归属
TrustedInstaller,普通管理员无法直接修改
仅禁用服务是不够的,Win10 会通过计划任务自动把服务重新拉起。
二、踩坑过程
第一次尝试(只禁服务 + 注册表)
Stop-Service wuauserv -Force
Set-Service wuauserv -StartupType Disabled
Set-Service UsoSvc -StartupType Disabled
Stop-Service UsoSvc -Force
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /t REG_DWORD /d 1 /f问题:未处理计划任务,系统会通过 UpdateOrchestrator 定时任务重新启用服务并触发更新。
第二次尝试(追加禁用计划任务)
Get-ScheduledTask -TaskPath "\Microsoft\Windows\UpdateOrchestrator\*" | Disable-ScheduledTask报错:
Disable-ScheduledTask : 拒绝访问。
HRESULT 0x80070005原因:这些计划任务文件(位于 C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator\)的所有者是 TrustedInstaller,即使管理员也无写入权限。
第三次尝试(夺权后再禁用)✅ 成功
思路:对每个任务文件先 takeown 夺取所有权,再 icacls 授权,最后执行 Disable-ScheduledTask。
Get-ScheduledTask -TaskPath "\Microsoft\Windows\UpdateOrchestrator\*" | ForEach-Object {
$path = "C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator\$($_.TaskName)"
takeown /f $path /a
icacls $path /grant Administrators:F
Disable-ScheduledTask -TaskName $_.TaskName -TaskPath $_.TaskPath
}结果:全部 13 个任务均成功禁用(State: Disabled)。
三、最终完整一行命令
⚠️ 需以管理员身份运行 PowerShell
Stop-Service wuauserv -Force; Set-Service wuauserv -StartupType Disabled; Set-Service UsoSvc -StartupType Disabled; Stop-Service UsoSvc -Force; reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f; reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /t REG_DWORD /d 1 /f; Get-ScheduledTask -TaskPath "\Microsoft\Windows\UpdateOrchestrator\*" | ForEach-Object { $path = "C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator\$($_.TaskName)"; takeown /f $path /a; icacls $path /grant Administrators:F; Disable-ScheduledTask -TaskName $_.TaskName -TaskPath $_.TaskPath }四、三层封锁说明
| 层级 | 操作 | 说明 |
|---|---|---|
| 服务层 | 禁用 wuauserv + UsoSvc | 停止并设为 Disabled,阻止开机自启 |
| 策略层 | 写注册表 AU 策略 | NoAutoUpdate=1,AUOptions=1,策略级别覆盖用户设置 |
| 计划任务层 | 夺权并禁用全部 UpdateOrchestrator 任务 | 防止任务重新拉起服务 |
五、被禁用的计划任务清单
| 任务名 | 作用 |
|---|---|
| Reboot_AC | 插电时重启安装更新 |
| Reboot_Battery | 电池模式重启安装更新 |
| Report policies | 上报策略信息 |
| Schedule Maintenance Work | 计划维护工作 |
| Schedule Scan | 计划扫描更新 |
| Schedule Scan Static Task | 静态扫描任务 |
| Schedule Wake To Work | 唤醒执行更新 |
| Schedule Work | 计划更新工作 |
| Start Oobe Expedite Work | OOBE 加急更新 |
| StartOobeAppsScanAfterUpdate | 更新后扫描应用 |
| StartOobeAppsScan_LicenseAccepted | 许可接受后扫描 |
| UpdateModelTask | 更新模型任务 |
| USO_UxBroker | 更新界面代理 |
六、恢复方法(如需重新开启更新)
Set-Service wuauserv -StartupType Manual
Start-Service wuauserv
Set-Service UsoSvc -StartupType Manual
Start-Service UsoSvc
Get-ScheduledTask -TaskPath "\Microsoft\Windows\UpdateOrchestrator\*" | Enable-ScheduledTask
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f记录时间:2026-05-18
评论 (0)