@echo off setlocal set saveundo=^>^>StorageBootStart_Undo.bat echo %saveundo% @echo off for /f "skip=1 tokens=1-5 delims=^&" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase') do ( if not .%%I==. call :checkcdd %%I %%J %%K %%L %%M ) endlocal goto :eof :checkcdd set key=%1 if not .%key:~0,18%==.HKEY_LOCAL_MACHINE goto :eof if not .%2==. set key=%1^&%2 if not .%3==. set key=%1^&%2^&%3 if not .%4==. set key=%1^&%2^&%3^&%4 if not .%5==. set key=%1^&%2^&%3^&%4^&%5 set class= set service= for /f "skip=2 tokens=1,2,*" %%I in ('reg query "%key%"') do ( if /i "%%I"=="ClassGUID" set class=%%K if /i "%%I"=="Service" set service=%%K ) if .==.%service% goto :eof if /i "%class%"=="{4D36E96A-E325-11CE-BFC1-08002BE10318}" goto :storage if /i "%class%"=="{4D36E97B-E325-11CE-BFC1-08002BE10318}" goto :storage goto :eof :storage set /a knowsv=knowsv_%service% if %knowsv%==1 goto:eof set knowsv_%service%=1 set start= for /f "skip=2 tokens=1,2,*" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\services\%service% /v Start') do ( if /i "%%I"=="Start" set /a start=%%K ) echo %service% %start% if "%start%"=="0" goto :eof %saveundo% echo %service% %start% %saveundo% reg add HKLM\SYSTEM\CurrentControlSet\services\%service% /v Start /t REG_DWORD /d %start% /f reg add HKLM\SYSTEM\CurrentControlSet\services\%service% /v Start /t REG_DWORD /d 0 /f goto :eof