diff --git a/Fix-RebootIntoSafeMode.bat b/Fix-RebootIntoSafeMode.bat index 51b66c9..7d222bf 100644 --- a/Fix-RebootIntoSafeMode.bat +++ b/Fix-RebootIntoSafeMode.bat @@ -1,60 +1,64 @@ @echo off -setlocal enabledelayedexpansion +setlocal cls -rem Temporary file to store the services we'll need to enable -set FILENAME=safebootservices.txt - -rem List of services that need to be started in Safe Mode with Networking -echo AteraAgent> %FILENAME% -echo Splashtop Inc.>> %FILENAME% -echo SplashtopRemoteService>> %FILENAME% - -echo. -echo Configuring required services to automatically start in Safe Mode with Networking set /a REBOOT=0 -for /f "delims=" %%G in (%FILENAME%) do ( - set SERVICE=%%G - call :reset-errorlevel - reg add "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\!SERVICE!" /f > nul 2>&1 - if !ERRORLEVEL! GTR 0 ( - echo ERROR: could not configure "!SERVICE!" service to start in Safe Mode with Networking - set /a REBOOT=!REBOOT!+1 - ) -) +echo. +echo Configuring required services to automatically start in Safe Mode with Networking. +call :configure-service AteraAgent +call :configure-service SplashtopRemoteService +:schedule-normal-reboot call :reset-errorlevel +echo Configuring system to reboot into Normal Mode at next reboot reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce" /v "*RestartNormalMode" /t REG_SZ /d "%SystemRoot%\System32\bcdedit.exe /deletevalue {current} safeboot" /f > nul 2>&1 if %ERRORLEVEL% GTR 0 ( - echo ERROR: could not configure reboot into normal mode set /a REBOOT=%REBOOT%+1 + echo ERROR: could not configure reboot into normal mode ) -if %REBOOT% EQU 0 goto :reboot -goto :end-error - -:reboot +:configure-reboot-safemodewithnetworking call :reset-errorlevel "%SystemRoot%\System32\bcdedit.exe" /set {current} safeboot network -if %ERRORLEVEL% EQU 0 ( - shutdown /r /f /t 10 - echo Restarting in 10 seconds - goto :end -) else ( - echo ERROR: could not restart in Safe Mode with Networking - goto :end-error +if %ERRORLEVEL% GTR 0 ( + set /a REBOOT=%REBOOT%+1 + echo ERROR: could not restart into Safe Mode with Networking ) +:reboot +if %REBOOT% EQU 0 ( + shutdown /r /f /t 5 + goto :end-success +) +goto :end-error + +:configure-service +call :reset-errorlevel +sc query | findstr /I "SERVICE_NAME: %*" >nul +if %ERRORLEVEL% EQU 0 ( + echo Enabling %* to startup in Safe Mode with Networking + reg add "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\%*" /f +) else ( + set /a REBOOT=%REBOOT%+1 + echo ERROR: could not configure %* service to start in Safe Mode with Networking +) +goto :EOF + +:reset-errorlevel +cmd /c "exit /b 0" +goto :EOF + +:end-success +echo Successfully scheduled a reboot into Safe Mode with Networking +exit /B 0 +goto :end + :end-error echo. echo Errors were encountered and the system will not be restarted echo Please make sure this script is run with administrative privileges +exit /B %REBOOT% goto :end -:end -del /f %FILENAME% -goto :EOF - -:reset-errorlevel -cmd /c "exit /b 0" \ No newline at end of file +:end \ No newline at end of file