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?
Asked
Active
Viewed 8,541 times
2 Answers
4
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.
-
2Hi James, its great to see you giving a good answer for your own question. In the future when you are creating the question you can check the checkbox that says 'Answer my own question' and this will allow you to write the answer before you post and someone has a chance to close it :) – Toby Allen Dec 20 '12 at 21:23
0
open cmd as admin and then run the bsdedit with these parameters "bcdedit /set {current} safeboot network"

patchy
- 1