Search code examples
vbscriptbatch-filerestartsafe-mode

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


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?


Solution

  • 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.