How to disable automatic repair & recovery in Windows

While using Windows, there is a chance that at some point, something may go wrong. Your system may no longer boot or fail to shut down properly. If it happens a certain number of times consecutively, Windows attempts to do repairs on its own. But advanced users definitely do not want this. Let’s see how to disable automatic repair & recovery.

What causes Windows to break on its own

Windows 10 now comes with automatic updates that you can’t easily opt out of. Big system upgrades / build upgrades to a major new version are also performed automatically. This is not ideal as what Windows does basically is it installs a new copy of itself and then migrates the data from the old installation in a very imperfect half-baked manner, leaving behind many settings and apps.

Even driver updates are automatically done these days which I think is a serious mistake. Any of these can cause your system to suddenly stop booting or start freezing or showing BSODs.

Windows automatic recovery and repair

Sometimes people’s systems get stuck in a loop because some updates failed to install correctly or contained a severe regression or bug. Windows then starts automatic recovery in such cases but the measures it takes are limited and not disclosed to you.

Diagnosing Your PC

Manual repair is better after researching the solution yourself than auto repair

It’s best to take matters into your own hands. Search for the issue on the web using Google. The chances are you will come across many other people who are facing the same issue or faced it in the past. Then you can see if they found a solution and take corrective actions yourself.

But for that you need access to at least the command prompt and all the recovery options in the Windows Recovery Environment without the system trying to repair things on its own and failing. You may also need access to the F8 boot menu to interrupt the boot process and before the automatic repair process begins.

Automatic Repair is also not informative or transparent about what it is doing. It may check the disk for errors using chkdsk, or attempt a startup repair of the Boot Configuration Data (BCD), even if the problem is something else. Eventually in most cases, Automatic repair most often does not solve the issue you were facing. It does not tell you what repairs it attempted.

Windows automatic recovery and repair often fails and does not repair your issue, does not tell you what repairs it attempted

Disable Windows auto recovery and repair

Here’s how to disable automatic recovery & repair in advance when your system is working fine. When your PC actually faces some issue, Windows won’t waste your time entering auto repair mode. You can get to researching the issue straightaway on the web from another PC and do manual repair. Or you could restore whatever was broken from a backup.

It’s a single command. Open an elevated (administrator) command prompt and type the following:

bcdedit /set {current} bootstatuspolicy IgnoreAllFailures

This will keep your manual recovery option (Repair your computer) option enabled. It will only disable automatic repair & recovery which the system tries to do on its own. Now you will be able to press F8 and choose any option.

Automating the tweak to prevent auto recovery / auto repair

If you don’t wish to manually open an elevated command prompt and type the command, just copy-paste the following text into a text file in Notepad and save it as a .cmd file. While typing the file name, be sure to type the file name in double quotes e.g. “Disable auto repair-auto recovery.cmd”. The double quotes will make sure that Notepad does not add a double file extension to it and does not accidentally end up saving the file as …recovery.cmd.txt.

Then just double click the file to make the changes. The batch file automatically checks for administrator permissions and elevates itself if it is not running as administrator. You will get a UAC prompt when you run it. Approve it.

@echo off
CLS
ECHO.

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

ECHO %batchName% Arguments: %1 %2 %3 %4 %5 %6 %7 %8 %9

@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
bcdedit /set {current} bootstatuspolicy IgnoreAllFailures
Pause
goto theEnd
:noAdmin
echo You must run this script as an Administrator!
echo.
pause
:theEnd

Leave a Reply

Your email address will not be published. Required fields are marked *