@echo off if "%1"=="fix" goto :fix rem -- install task copy /y "%~f0" "%SystemRoot%\system32\usbbootfix.bat" SCHTASKS /Create /RU SYSTEM /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-UserPnp'] and EventID=20003]]" /EC System /TN USBBootFix /TR "'%SystemRoot%\system32\usbbootfix.bat' fix" /F rem -- apply other settings reg add HKLM\SYSTEM\CurrentControlSet\services\pciide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\msahci /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\intelide /v Start /t REG_DWORD /d 0x0 /f reg add HKLM\SYSTEM\CurrentControlSet\services\viaide /v Start /t REG_DWORD /d 0x0 /f rem -- run :fix once after install :fix call :fixservice usbehci "Boot Bus Extender" call :fixservice usbohci "Boot Bus Extender" call :fixservice usbuhci "Boot Bus Extender" call :fixservice usbhub "System Bus Extender" call :fixservice usbstor "SCSI miniport" goto :eof :fixservice setlocal set Start= set Group= for /f "skip=2 tokens=1,2,*" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\services\%~1') do ( if "%%I"=="Start" set Start=%%K if "%%I"=="Group" set Group=%%K ) if not "%Start%"=="0x0" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Start /t REG_DWORD /d 0x0 /f if not "%Group%"=="%~2" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Group /t REG_SZ /d "%~2" /f endlocal goto :eof