Windows 暂停更新 100 年的方法
cbowen

简介

Windows 设置里默认只能把更新暂停一小段时间。如果只是想避免它在工作、上课或者打游戏时突然重启,可以通过修改注册表,把 Windows Update 的暂停时间写到很久以后。

这个方法本质上就是修改下面这个注册表路径:

1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings

把更新的开始时间和结束时间写进去,让系统认为更新已经暂停到 100 年后。

需要注意的是,这不是永久禁用 Windows Update。大版本升级、系统修复、组策略、企业或学校设备策略,都可能重新覆盖这些设置。个人电脑临时控制自动更新的话,一般已经够用了。

暂停 Windows 更新

先用管理员权限打开 PowerShell 或 Windows Terminal:

1
右键开始菜单 -> 终端(管理员)

也可以搜索 PowerShell,然后右键选择以管理员身份运行。没有管理员权限的话,修改注册表时一般会提示拒绝访问。

然后直接执行下面这条命令:

1
$ErrorActionPreference="Stop"; $start=Get-Date; $end=$start.AddYears(100); $p="HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"; if(!(Test-Path $p)){New-Item -Path $p -Force | Out-Null}; $s=$start.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); $e=$end.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); $strings=@{"PauseUpdatesStartTime"=$s;"PauseUpdatesExpiryTime"=$e;"PauseFeatureUpdatesStartTime"=$s;"PauseFeatureUpdatesEndTime"=$e;"PauseQualityUpdatesStartTime"=$s;"PauseQualityUpdatesEndTime"=$e}; foreach($k in $strings.Keys){New-ItemProperty -Path $p -Name $k -Value $strings[$k] -PropertyType String -Force | Out-Null}; $dwords=@{"PauseUpdatesActive"=1;"PauseFeatureUpdates"=1;"PauseQualityUpdates"=1}; foreach($k in $dwords.Keys){New-ItemProperty -Path $p -Name $k -Value $dwords[$k] -PropertyType DWord -Force | Out-Null}; Write-Host "已尝试暂停 Windows 更新到:$end" -ForegroundColor Green

执行成功后会看到类似输出:

1
已尝试暂停 Windows 更新到:2126/xx/xx ...

检查是否生效

建议重启电脑后再查看:

1
设置 -> Windows 更新

如果页面显示更新已暂停,说明设置已经生效。

不同 Windows 版本的显示方式可能不一样。有些系统不会直接显示 100 年后的日期,但只要注册表里的暂停时间已经写入,通常就可以正常起作用。

恢复 Windows 更新

之后如果想恢复更新,还是用管理员权限打开 PowerShell,然后执行:

1
$p="HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"; $names="PauseUpdatesStartTime","PauseUpdatesExpiryTime","PauseFeatureUpdatesStartTime","PauseFeatureUpdatesEndTime","PauseQualityUpdatesStartTime","PauseQualityUpdatesEndTime","PauseUpdatesActive","PauseFeatureUpdates","PauseQualityUpdates"; foreach($n in $names){Remove-ItemProperty -Path $p -Name $n -ErrorAction SilentlyContinue}; Write-Host "已清除暂停更新设置" -ForegroundColor Green

运行后重启电脑,再进入:

1
设置 -> Windows 更新

手动检查更新即可。

常见问题

拒绝访问

如果提示:

1
2
拒绝访问
Access is denied

一般是因为 PowerShell 没有用管理员权限运行。重新以管理员身份打开终端再执行命令即可。

Set-ItemProperty 不支持 Type 参数

如果把命令写成下面这样,可能会报错:

1
Set-ItemProperty -Path xxx -Name xxx -Value xxx -Type String

原因是 Set-ItemProperty 没有 -Type 参数。

需要指定注册表值类型时,可以使用:

1
2
New-ItemProperty -PropertyType String
New-ItemProperty -PropertyType DWord

上面的脚本已经使用了这种写法。

相关字段

脚本主要写入这些字段:

1
2
3
4
5
6
7
8
9
PauseUpdatesStartTime
PauseUpdatesExpiryTime
PauseFeatureUpdatesStartTime
PauseFeatureUpdatesEndTime
PauseQualityUpdatesStartTime
PauseQualityUpdatesEndTime
PauseUpdatesActive
PauseFeatureUpdates
PauseQualityUpdates

其中 PauseUpdatesExpiryTime 表示暂停更新的到期时间。脚本把它设置成当前时间往后 100 年。

如果只是想防止 Windows 自动更新打断使用,这个方法比较直接。要更彻底地禁用更新,就需要配合组策略、服务、任务计划程序等方式,不过风险也更高,可能影响安全补丁。

 评论
评论插件加载失败
正在加载评论插件