@echo off
cls
cd /d %~dp0

:: Saisir les informations du driver
set nomdvr=spring
set /p nomdvr="Saisir le nom du driver [%nomdvr%] : "
set nomsvc=%nomdvr%
set /p nomsvc="Saisir le nom du service [%nomdvr%] : "
set nomreg=%nomdvr%
set /p nomreg="Saisir le nom de la cle registre [%nomdvr%] : "

:: Déterminer les variables
set driver=%windir%\System32\drivers\%nomdvr%.sys
set service=HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\%nomsvc%
set dump=HKEY_LOCAL_MACHINE\System\CurrentControlSet\%nomreg%

:: Debloquer le driver
echo Debloque le driver...
.\x64\setacl.exe -on %driver% -ot file -actn setowner -ownr "n:S-1-5-32-544" -silent -ignoreerr
.\x64\setacl.exe -on %driver% -ot file -actn ace -ace "n:S-1-5-32-544;p:full" -silent -ignoreerr

:: Supprimer le driver
echo Supprime le driver...
.\outils\movefile.exe /accepteula %driver% "" > nul 2>&1

:: Débloquer le registre
echo Debloque le registre...
.\x64\setacl.exe -on %service% -ot reg -actn setowner -ownr "n:S-1-5-32-544" -rec yes -ignoreerr -silent
.\x64\setacl.exe -on %service% -ot reg -actn ace -ace "n:S-1-5-32-544;p:full" -rec yes -ignoreerr -silent
.\x64\setacl.exe -on %dump% -ot reg -actn setowner -ownr "n:S-1-5-32-544" -rec yes -ignoreerr -silent
.\x64\setacl.exe -on %dump% -ot reg -actn ace -ace "n:S-1-5-32-544;p:full" -rec yes -ignoreerr -silent 

:: Mémoriser le numero OEM
reg Query "%service%" > nul 2>&1
if %errorlevel%==0 (
	for /f "tokens=3" %%o in ('reg Query "%service%" ^| find "Owners"') do set oem=%%o
)

:: Nettoyer le registre
echo Nettoie le registre...
reg delete %service% /f > nul 2>&1
reg delete %dump% /f > nul 2>&1

:: Désinstaller le périphérique
echo Desinstalle le peripherique...
.\x64\devcon.exe remove root\%nomdvr% > nul 2>&1

:: Supprimer la DeviceClass
reg delete "HKLM\System\CurrentControlSet\Control\DeviceClasses\{45e0f259-9cbf-456e-9da5-821aa42c4a01}" /f > nul 2>&1

:: Nettoyer le DriverStore
pnputil -d %oem% -f > nul 2>&1

echo Ok!
echo.
pause

:: Redémarrer le PC
echo.
echo Redemarre...
shutdown /r /t 05 /c WX23PACK /f