Is it really too much to ask to simply warn the user that the OS needs an update (you know, like Apple does)?
Apparently it is. So the OS just updates whenever M$ feels it is necessary despite a 20 page document being open with complicated equations that took me several days to author. Fortunately I didn't lose much work but the outcome could've been a lot worse.
# Click Start menu > Settings > Update & Security
# In the upper left Click: Windows Update
# On the right Click: Change active hours
## Set your active hours, so it won't restart during them and then click the arrow in the upper left to go back
# Click Advanced options
## Turn Off "Restart this device as soon as possible when a restart is required to install an update. Windows will display a notice before the restart, and the device must be on and plugged in."
## Turn On "Show notifications when your PC requires a restart to finish updating"
I add this batch file I wrote a long time ago to my Startup folder and it asks me if I want to Disable or Enable Windows Updates.
# To open your Startup folder, Click Start menu and don't click anything else and just start typing: Run
# Open Run
# In the Open field type: shell:startup
# Click OK
# Create the batch file below and put it in your Startup folder
# To create the batch file, copy the code below into Notepad and save as: Windows_Update_Disable_or_Enable.cmd
Code:
@ECHO OFF
COLOR 05
PROMPT
SETLOCAL DisableDelayedExpansion
SETLOCAL EnableDelayedExpansion
REM ###############################################################################
:X_LBL_Title
SET "_AppName=# Windows Update Disable or Enable #"
SET "_Version=v2021-12-16_190143_Th"
SET "_Author=Written by Lou $oldi II aka GotMetalBoy"
SET "_TITLE=%_AppName% %_Version% - %_Author%"
TITLE %_TITLE%
REM ###############################################################################
:CheckPrivileges
NET FILE >NUL 2>&1
IF !ErrorLevel! EQU 0 (
GOTO LBL_Check_Elevation_SKIP
) ELSE (
SET "_App_Path="
SET "_App_Path=%~0"
CALL :LBL_VBS_RunAs_Elevated
EXIT
)
REM ###############################################################################
:LBL_VBS_RunAs_Elevated
IF EXIST "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs" DEL "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs"
(
ECHO Set UAC = CreateObject^("Shell.Application"^)
ECHO UAC.ShellExecute "!_App_Path!", "", "", "runas", 1
)> "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs"
WSCRIPT "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs"
IF EXIST "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs" DEL "!TEMP!\OK_To_Delete_VBS_RunAs_Elevated.vbs"
EXIT /B
:LBL_Check_Elevation_SKIP
REM ###############################################################################
:LBL00_Menu
CLS
COLOR 05
ECHO.
ECHO !_TITLE!
ECHO ###############################################################################
ECHO This program will Disable or Enable Windows Update
ECHO Windows Update Service name: wuauserv
ECHO ###############################################################################
ECHO Please make a selection from the menu below and press ENTER:
ECHO 1. Disable Windows Update
ECHO 2. Enable Windows Update
ECHO 3. Status of Windows Update
ECHO 99. Don't make any changes and Exit
ECHO ###############################################################################
ECHO.
:LBL00_Menu_Prompt
SET "_LBL00_MENU_PROMPT="
SET /P "_LBL00_MENU_PROMPT=* Type your selection number and press ENTER: "
IF /I !_LBL00_MENU_PROMPT!==1 GOTO LBL01_WU_DISABLE
IF /I !_LBL00_MENU_PROMPT!==2 GOTO LBL02_WU_ENABLE
IF /I !_LBL00_MENU_PROMPT!==3 GOTO LBL02_WU_STATUS
IF /I !_LBL00_MENU_PROMPT!==99 EXIT
IF /I !_LBL00_MENU_PROMPT!==E EXIT
IF /I !_LBL00_MENU_PROMPT!==EXIT EXIT
:LBL00_Menu_Prompt_Not_Valid
CLS
COLOR 0C
ECHO.
ECHO ###############################################################################
ECHO ###############################################################################
ECHO "!_LBL00_MENU_PROMPT!" is not a valid selection, Please try again.
ECHO ###############################################################################
ECHO ###############################################################################
TIMEOUT /T 2 >NUL 2>&1
COLOR F0
CALL :LBL00_Menu
EXIT /B
REM ###############################################################################
:LBL01_WU_DISABLE
CLS
TITLE # Disable Windows Update #
COLOR 05
ECHO.
ECHO ###############################################################################
ECHO Disabling Services
ECHO ###############################################################################
ECHO.
SC CONFIG wuauserv START= disabled >NUL 2>&1
ECHO.
ECHO ###############################################################################
ECHO Stopping Services
ECHO ###############################################################################
ECHO.
NET STOP wuauserv /Y
ECHO.
ECHO ###############################################################################
ECHO Status of Windows Update
ECHO ###############################################################################
ECHO.
SC.exe queryex wuauserv | FINDSTR /I "STATE"
SC.exe qc wuauserv | FINDSTR /I "START_TYPE"
ECHO.
ECHO ###############################################################################
ECHO Press any key to return to the main Menu
ECHO ###############################################################################
ECHO.
PAUSE >NUL 2>&1
GOTO LBL00_Menu
REM ###############################################################################
:LBL02_WU_ENABLE
CLS
TITLE # Enable Windows Update #
COLOR 05
ECHO.
ECHO ###############################################################################
ECHO Setting Services startup type back to defaults
ECHO ###############################################################################
ECHO.
SC CONFIG wuauserv START= delayed-auto >NUL 2>&1
ECHO.
ECHO ###############################################################################
ECHO Starting Services
ECHO ###############################################################################
ECHO.
NET START wuauserv /Y
ECHO.
ECHO ###############################################################################
ECHO Status of Windows Update
ECHO ###############################################################################
ECHO.
SC.exe queryex wuauserv | FINDSTR /I "STATE"
SC.exe qc wuauserv | FINDSTR /I "START_TYPE"
ECHO.
ECHO ###############################################################################
ECHO Press any key to return to the main Menu
ECHO ###############################################################################
ECHO.
PAUSE >NUL 2>&1
GOTO LBL00_Menu
REM ###############################################################################
:LBL02_WU_STATUS
CLS
TITLE # Status of Windows Update #
COLOR 05
ECHO.
ECHO ###############################################################################
ECHO Status of Windows Update
ECHO ###############################################################################
ECHO.
SC.exe queryex wuauserv | FINDSTR /I "STATE"
SC.exe qc wuauserv | FINDSTR /I "START_TYPE"
ECHO.
ECHO ###############################################################################
ECHO Press any key to return to the main Menu
ECHO ###############################################################################
ECHO.
PAUSE >NUL 2>&1
GOTO LBL00_Menu
REM ###############################################################################
EXIT