How do I restart a computer in safe mode with a Windows script?

user1914378 picture user1914378 · Dec 20, 2012 · Viewed 7.9k times · Source

Most novice computer users get stumped when they run into a problem and have to reboot a computer into safe mode, so how can you script this to make it automatic?

Answer

user1914378 picture user1914378 · Dec 20, 2012

Here is a batch script that will restart a Windows XP, Vista, or Windows 7 computer into safe mode.

Echo Off

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
goto warn_and_exit

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 07
goto end

:ver_nt6x
:Run Windows Vista/7 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 07
goto end

Echo On

:warn_and_exit
echo Machine OS cannot be determined.

:end 

This script was originally posted by ChunkDog at: https://forum.ultravnc.net/viewtopic.php?f=50&t=29663

I have modified it, and added a vbscript that asks the user if he/she wants to restart into safe mode, and based on the users input, it calls the batch file.

Dim oShell, returnCode
Set objShell = CreateObject("Shell.Application")
Set oShell = WScript.CreateObject("WScript.Shell")

returnCode = oShell.Popup("Do you want to restart your computer in Safe Mode", 0, "Restart In Safe Mode", 4 + 48 + 256)

Select Case returnCode
case 6, -1
    objShell.ShellExecute "tryout.bat", "", "", "runas", 0
    case 7
    oShell.popup "Operation Canceled", 0, "Restart In Safe Mode", 0 + 64 + 0
End Select

This has not yet been tested on Windows 8.