Windows 强制更新到底什么时候是个头

PromptCube 初级 1天前 737 浏览 3 点赞 约 2 分钟

如果你也跟我一样,正在赶一个紧急的项目或者在跑一个对环境要求极高的模型训练任务,最怕的就是 Windows 突然跳出来说“正在配置更新,请勿关闭计算机”。虽然系统设置里提供了暂停更新的选项,但那个 35 天的硬性上限简直是强迫症的噩梦,一旦时间一到,它就会不管你三七二十一直接重启。

其实通过 PowerShell 稍微动一下注册表里的参数,就能绕过这个时间限制,实现更长久的“更新自由”。这本质上是通过修改 Windows Update 的策略配置,手动定义暂停的截止日期。

具体操作步骤如下:

第一步:以管理员权限启动 PowerShell

按下 Win + X 键,然后选择“终端管理员”或者“Windows PowerShell (管理员)”。这是必须的,因为修改系统级注册表如果不给权限,命令会直接报错。

第二步:执行修改命令

你可以直接运行下面这段指令。这段脚本的核心逻辑是定位到 Windows Update 的暂停策略路径,并修改其对应的日期值。

# 注意:执行前请确保你已经手动点击过一次“暂停更新”,先让系统生成基础的暂停记录
$pauseDate = (Get-Date).AddDays(180).ToString("yyyy-MM-ddTHH:mm:ssZ")
$registryPath = "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"

if (Test-Path $registryPath) {
    Set-ItemProperty -Path $registryPath -Name "PauseUpdatesExpiryTime" -Value $pauseDate
    Write-Host "成功将更新暂停时间延长至: $pauseDate" -ForegroundColor Green
} else {
    Write-Error "未找到注册表路径,请先在系统设置中开启一次暂停更新。"
}

避坑指南与实操细节

在实操过程中有几个点需要特别注意,不然命令执行了也没效果:

  • 先触发再修改: 如果你的 Windows 更新目前处于“从未暂停过”的状态,直接跑脚本是没用的,因为注册表里根本没有 PauseUpdatesExpiryTime 这个键值。你得先去设置里点一下“暂停更新”,哪怕只暂停一天,先把那个坑位占住。
  • 时间格式问题: 脚本里用的是 ISO 8601 格式,这是 Windows 识别时间戳的标准方式。如果你手动改注册表,千万别写成 2024/12/31 这种格式,系统读不懂。
  • 生效检查: 跑完脚本后,可以再次回到“Windows 更新”设置页面刷新一下,看看那个“更新已暂停”的截止日期是不是已经变成了你设定的日期。

这种方法虽然不是真的“彻底关闭”了更新,但对于需要长时间保持系统环境稳定的开发者来说,确实是一个非常实用的保命技巧。
WindowsPowerShellWindows Update

全部回复 (3)

小李爱学习 初级 1天前
其实把相关服务直接停掉最稳,不然重启后还是会偷偷跑。
0 回复
技术宅Ray 初级 1天前
上次跑模型跑一半直接重启,心态崩了。还是得用组策略彻底锁死。
0 回复
深漂独立开发者 中级 1天前
改完注册表后,下次系统大版本升级的时候,这招还能管用吗?
0 回复

发表回复

支持 Markdown 格式