Disable modern boot UI & restore F8 boot menu

One of the most atrocious changes in Windows 8 which was continued in Windows 10 was to the pre-boot environment. A new UEFI-based graphical boot environment was introduced and it removed the ability to press F8 to interrupt the boot process. Let’s see how to disable modern boot UI & restore F8 boot menu like Windows 7.

Rant: User ability to interrupt boot process is important

In all previous versions of Windows dating all the way back to Windows 95, the boot process could be interrupted by pressing the F8 key. Microsoft reduced the ease of doing this. Why would you want to interrupt the boot process? Well there are times when you want to quickly and directly load the OS with some other advanced startup options such as Disable Driver Signature Enforcement. Or you may want to directly boot into another installed operating system.

The new boot UI is worse and difficult for keyboard navigation. Choosing a boot option with the up/down arrow keys on a keyboard was much faster in the older text-based user interface. Besides, in a multi-boot scenario, the ability to directly boot into another OS besides the default one is slowed down. The Windows boot process begins and then if you choose another operating system, the new Windows 10 boot environment reboots again to load the other OS. This just wastes the user’s time.

How the Advanced Boot Options menu looked

In Windows 2000, Windows XP, Windows Vista, and Windows 7, you could press F8 key to see this startup menu. Windows Vista and Windows 7 also added the Space bar to just show the boot menu without showing advanced options, while F8 now directly showed the advanced options. This is how the boot menu looked like.

The classic Windows 7 text-based boot menu

F8 boot menu Advanced Boot Options

You could also access the following advanced options from this Startup menu:

  • Repair Your Computer – this starts Windows Recovery Environment (WinRE).
  • Safe Mode – This loads Windows in Safe Mode, a boot mode with minimal drivers so that if malware or faulty drivers have made Windows unbootable in normal mode, you can fix it.
  • Safe Mode with Networking – Loads Windows in Safe Mode and the network is operational.
  • Safe Mode with Command Prompt – Loads Windows in Safe Mode but with the Command Prompt as the shell instead of Explorer.exe. Windows Explorer can still be loaded by typing Explorer at the cmd prompt.
  • Enable Boot Logging – This writes a text file, ntbtlog.txt, that will log the boot process in details, mentioning which drivers loaded and which ones did not.
  • Enable low resolution video – This option loads Windows but with installed default graphics driver disabled. It uses the standard VGA driver. This is intended for troubleshooting in case the user switched to a screen resolution that the display did not support.
  • Last Known Good Configuration – This option loads the last Windows hardware/driver configuration (CurrentControlSet, ControlSet001, ControlSet002) when the system last booted successfully. Intended for troubleshooting.
  • Directory Services Restore Mode – This boot mode is used to restart the Domain Controller in case the PC is connected to an NT Domain.
  • Debugging Mode – This boots Windows while loading the kernel debugger.
  • Disable automatic restart on system failure – This prevents Windows from automatically rebooting if a bug check occurs, commonly known as the Blue Screen of Death which halts the system.
  • Disable Driver Signature Enforcement – Windows normally requires that all drivers are digitally signed by Microsoft. This option allows loading unsigned drivers.
  • Disable early launch anti-malware driver – Windows supports loading of any anti-malware drivers early on in the boot process for added security. This option disables those drivers.
  • Start Windows Normally – this boots Windows normally.

How to turn off the UEFI boot menu and restore classic F8 boot menu

In Windows 8, Microsoft did some changes for the worse and gave the excuse that to speed up booting Windows, the boot loader and the boot manager do not even wait for the F8 key. It is ignored and Microsoft even officially acknowledges it.

Fortunately, Microsoft has kept the option to bring back the good old text-based loader using bcdedit.exe. In an elevated command prompt (Run as administrator), just run this command:

bcdedit /set {bootmgr} displaybootmenu yes

This will restore F8 boot menu that you were used to seeing in Windows 7 and Windows Vista. To undo the change, just change yes in the command to no.

However even after this change, only the text-based main boot menu returns but the Advanced Boot options are still shown in Windows 10-style.

The modern advanced boot options menu

To bring the classic options back, just run this command from an elevated command prompt:

bcdedit /set “{Current}” BootMenuPolicy Legacy

After you disable modern boot UI and bring back F8 with Windows 7 boot menu

To undo the change, use the command:

bcdedit /set “{Current}” BootMenuPolicy Standard

How to access the advanced startup options once on the next restart

At elevated (administrator) command prompt, type the following and then Restart normally:

bcdedit /set {current} onetimeadvancedoptions on

How to access Windows UEFI-based graphical boot environment again

Just keep holding down the Shift key as you press Restart in Windows to access the advanced startup and recovery options in the new style.

Automating the tweak to restore F8 boot menu

If you don’t wish to manually open an elevated command prompt and type these commands, 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 modern boot UI and restore F8 boot menu.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 …Restore F8.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.

@echo off

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

if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)

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

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 "{bootmgr}" displaybootmenu yes
Bcdedit /set "{current}" bootmenupolicy legacy
goto theEnd
echo You must run this script as an Administrator!

Leave a Reply

Your email address will not be published.