Windows Update Change Maximum Days to Pause Windows Update in Windows 11

  • Thread starter Thread starter Brink
  • Start date Published: Start date Updated Updated:

Pause_updates_banner.png

This tutorial will show you how to change the maximum days you can pause or effectively disable Windows Update for in Windows 11.

If you have the new Pick a date calendar experience to pause updates, then the method in this tutorial will no longer work.

Instead, you can manually change how long to pause updates until like in the tutorial linked below if the amount of time you can select in the calendar isn't long enough.



Windows Update keeps Windows 11 updated by automatically downloading and installing the latest updates, drivers, and hotfixes released by Microsoft.

If you have a Windows Insider build of Windows 11 installed, you can only pause updates for a maximum of 1 week (7 days) by default until updates automatically resume.

If you do not have a Windows Insider build of Windows 11 installed, you can pause updates for a maximum of up to 5 weeks (35 days) by default until updates automatically resume.

You can manually change the maximum days you have available to pause Windows Update for however long you want instead to effectively disable automatic updates.

You must be signed in as an administrator to change the maximum days to pause Windows Update.


If you change the maximum days to pause Windows Updates to a large number of days (ex: 3650 days for 10 years), you can effectively disable Windows Update.


For Windows Insider builds, the FlightSettingsMaxPauseDays DWORD value used in this tutorial will automatically get reset back to its default 7 days each time you either Check for Updates or Resume updates.



EXAMPLE: Default maximum days to pause updates for

7_days_max_to_pause_updates.png
35_days_max_to_pause_updates.png



Here's How:

1 Open Registry Editor (regedit.exe).

2 Navigate to the key below in the left pane of Registry Editor. (see screenshot below)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings

FlightSettingsMaxPauseDays-1.png

3 In the right pane of the Settings key, double click/tap on the FlightSettingsMaxPauseDays DWORD to modify it. (see screenshot above)

The FlightSettingsMaxPauseDays DWORD value is not available by default in public builds of Windows 11.

To add the FlightSettingsMaxPauseDays DWORD value, right click on an empty area in the right pane of the Settings key, click/tap on New, click/tap on DWORD (32-bit) Value, type FlightSettingsMaxPauseDays for the name, and press Enter.


4 Perform the following actions: (see screenshot below)
  1. Select (dot) Decimal.
  2. Type how many maximum days you want in increments of 7 days to pause updates for.
  3. Click/tap on OK.

The default is 7 days for Insider builds.

The default is 35 days for non-Insider builds.


FlightSettingsMaxPauseDays-2.png

5 You can now close Registry Editor if you like.

6 If you have the Windows Update page open in Settings, then close and reopen Settings to see your changes to pause updates for.


That's it,
Shawn Brink


 
Last edited:
This version wraps the PS inside a batch script (only one file is required), and does the Admin check for you.

Pause_Windows_Update_60.bat
Code:
<# : batch script
@echo off
powershell -nop ^
"if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { ^
    Start-Process 'cmd' -ArgumentList '/c %~dpnx0' -Verb RunAs ^
} ^
else { ^
    Invoke-Expression ([System.IO.File]::ReadAllText('%~f0')) ^
}"
goto :eof
#>

# PowerShell script to pause Windows Update for 60 days from the current date
# This script must be run as Administrator

$Days = 60

# Calculate dates (Now and exactly 60 days in the future)
$Now = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$Future = (Get-Date).AddDays($Days).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

# Define the registry path (PowerShell HKLM format)
$Path = "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"

# Write the values directly to the registry
Set-ItemProperty -Path $Path -Name "PauseFeatureUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseFeatureUpdatesEndTime" -Value $Future

Set-ItemProperty -Path $Path -Name "PauseQualityUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseQualityUpdatesEndTime" -Value $Future

Set-ItemProperty -Path $Path -Name "PauseUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseUpdatesExpiryTime" -Value $Future

$FutureLocalDate = (Get-Date).AddDays($Days).ToString("d")
Write-Host "Windows Update successfully paused for $Days days (until $FutureLocalDate)!" -ForegroundColor Green
 
Last edited:

My Computer My Computer

At a glance

Windows 7
OS
Windows 7
If I would like to have a variable for the days, could I use something like this for it?

Code:
# PowerShell script to pause Windows Update for 60 days from the current date
# This script must be run as Administrator

# Calculate dates (Now and exactly NN days in the future)
$NNDays = 60
$Now = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$Future = (Get-Date).AddDays($NNDays).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

# Define the registry path (PowerShell HKLM format)
$Path = "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"

# Write the values directly to the registry
Set-ItemProperty -Path $Path -Name "PauseFeatureUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseFeatureUpdatesEndTime" -Value $Future

Set-ItemProperty -Path $Path -Name "PauseQualityUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseQualityUpdatesEndTime" -Value $Future

Set-ItemProperty -Path $Path -Name "PauseUpdatesStartTime" -Value $Now
Set-ItemProperty -Path $Path -Name "PauseUpdatesExpiryTime" -Value $Future

$FutureLocalDate = (Get-Date).AddDays(60).ToString("d")
Write-Host "Windows Update successfully paused for $NNDays days (until $FutureLocalDate)!" -ForegroundColor Green


I have been doing (a little bit of) programming in Batches, Basic, C, CSS and more, but the programming style of Powershell I am not very much familiar with.

Edit: @garlin I see you posted a better way to do it via a total batch. Could you rewrite that with a variable for the amount of days?
Edit 2: I see you already implemented that! (y)
 

My Computer My Computer

At a glance

Windows 11 Pro 25H2AMD Ryzen 7 5700GKingston FURY Beast 2x16GB DIMM DDR4 2666 CL16MSI GeForce GT 730 2GB LP V1
OS
Windows 11 Pro 25H2
Computer type
PC/Desktop
Manufacturer/Model
Build by vendor to my specs
CPU
AMD Ryzen 7 5700G
Motherboard
MSI PRO B550M-P Gen3
Memory
Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
Graphics Card(s)
MSI GeForce GT 730 2GB LP V1
Sound Card
Creative Sound Blaster Audigy FX
Monitor(s) Displays
Samsung S24E450F 24"
Screen Resolution
1920 x 1080
Hard Drives
1. SSD Crucial P5 Plus 500GB PCIe M.2
2. SSD-SATA Crucial MX500-2TB
PSU
Corsair CV650W
Case
Cooler Master Silencio S400
Cooling
Cooler Master Hyper H412R with Be Quiet Pure Wings 2 PWM BL038 fan
Keyboard
Cherry Stream (wired, scissor keys)
Mouse
Asus WT465 (wireless)
Internet Speed
70 Mbps down / 80 Mbps up
Browser
Firefox 130.0
Antivirus
F-Secure (Internetprovider version)
Other Info
Router: FRITZBox 7490
Oracle VirtualBox 7 for testing software on Win 10 or 11
Just corrected the script because of the $Days was missing a 's'.
 

My Computer My Computer

At a glance

Windows 7
OS
Windows 7
I just tested your script (including the corerected $Days), but it does not seem to function. The only thing I get is the UAC window and when I click yes, a black (command?) window flashes, but no change in the registry. Not after refreshing as well.

Because it's rather late for me (often need an early sleep) I'll try again tomrrow. For me the method of separate start and Powershell script is a little bit better to understand what's happening.
 

My Computer My Computer

At a glance

Windows 11 Pro 25H2AMD Ryzen 7 5700GKingston FURY Beast 2x16GB DIMM DDR4 2666 CL16MSI GeForce GT 730 2GB LP V1
OS
Windows 11 Pro 25H2
Computer type
PC/Desktop
Manufacturer/Model
Build by vendor to my specs
CPU
AMD Ryzen 7 5700G
Motherboard
MSI PRO B550M-P Gen3
Memory
Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
Graphics Card(s)
MSI GeForce GT 730 2GB LP V1
Sound Card
Creative Sound Blaster Audigy FX
Monitor(s) Displays
Samsung S24E450F 24"
Screen Resolution
1920 x 1080
Hard Drives
1. SSD Crucial P5 Plus 500GB PCIe M.2
2. SSD-SATA Crucial MX500-2TB
PSU
Corsair CV650W
Case
Cooler Master Silencio S400
Cooling
Cooler Master Hyper H412R with Be Quiet Pure Wings 2 PWM BL038 fan
Keyboard
Cherry Stream (wired, scissor keys)
Mouse
Asus WT465 (wireless)
Internet Speed
70 Mbps down / 80 Mbps up
Browser
Firefox 130.0
Antivirus
F-Secure (Internetprovider version)
Other Info
Router: FRITZBox 7490
Oracle VirtualBox 7 for testing software on Win 10 or 11
I continued anyway (even though it's actually not good for me), because it intrigued me.

I did get it working as a separate PS script and a separate start batch, but I can't get the complete script in btach to work.
Can't get it how that functions.

I have now modified the PS script in my post #57 with the number of days as a variable and the end date notification.
 

My Computer My Computer

At a glance

Windows 11 Pro 25H2AMD Ryzen 7 5700GKingston FURY Beast 2x16GB DIMM DDR4 2666 CL16MSI GeForce GT 730 2GB LP V1
OS
Windows 11 Pro 25H2
Computer type
PC/Desktop
Manufacturer/Model
Build by vendor to my specs
CPU
AMD Ryzen 7 5700G
Motherboard
MSI PRO B550M-P Gen3
Memory
Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
Graphics Card(s)
MSI GeForce GT 730 2GB LP V1
Sound Card
Creative Sound Blaster Audigy FX
Monitor(s) Displays
Samsung S24E450F 24"
Screen Resolution
1920 x 1080
Hard Drives
1. SSD Crucial P5 Plus 500GB PCIe M.2
2. SSD-SATA Crucial MX500-2TB
PSU
Corsair CV650W
Case
Cooler Master Silencio S400
Cooling
Cooler Master Hyper H412R with Be Quiet Pure Wings 2 PWM BL038 fan
Keyboard
Cherry Stream (wired, scissor keys)
Mouse
Asus WT465 (wireless)
Internet Speed
70 Mbps down / 80 Mbps up
Browser
Firefox 130.0
Antivirus
F-Secure (Internetprovider version)
Other Info
Router: FRITZBox 7490
Oracle VirtualBox 7 for testing software on Win 10 or 11
My script probably needs a -NoExit so you can see the text.
 

Attachments

My Computer My Computer

At a glance

Windows 7
OS
Windows 7
This version wraps the PS inside a batch script (only one file is required), and does the Admin check for you.

Pause_Windows_Update_60.bat etc. etc.

+10 just for using [Security.Principal.WindowsBuiltInRole]::Administrator. It bothers me when people just use "Administrator."
 

My Computer My Computer

At a glance

Windows 11 Enterprise 25H2
OS
Windows 11 Enterprise 25H2
+10 just for using [Security.Principal.WindowsBuiltInRole]::Administrator. It bothers me when people just use "Administrator."
I used to ignore the latter method, because "Administrator" always worked for me.

Until one day a French user informed me the script never worked. Then you realize it's a bad idea to match for arbitrary English words, and switch to using enumerated constants.

Like SID "S-1-5-32-544" to express the Administrateurs group.
 

My Computer My Computer

At a glance

Windows 7
OS
Windows 7

Latest Support Threads

Back
Top Bottom