@echo off
rem RUTP uninstaller — удаляет RUTP начисто, даже если файлы заняты другой
rem программой (тогда остатки удаляются при следующей перезагрузке).

if /I "%~1"=="--worker" goto worker

rem Перезапускаемся из %TEMP%, чтобы можно было удалить собственную папку.
set "TARGET=%~dp0"
copy /y "%~f0" "%TEMP%\rutp_uninstall.bat" >nul
start "" /min cmd /c ""%TEMP%\rutp_uninstall.bat" --worker "%TARGET%""
exit /b

:worker
set "RUTP_TARGET=%~2"
echo Удаляю RUTP...
taskkill /IM RUTP.exe /F >nul 2>&1
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v RUTP /f >nul 2>&1
rem дать процессу освободить файлы
ping -n 4 127.0.0.1 >nul
rmdir /s /q "%RUTP_TARGET%" 2>nul

if not exist "%RUTP_TARGET%" (
  echo RUTP удалён.
  ping -n 3 127.0.0.1 >nul
  del "%~f0" >nul 2>&1
  exit /b
)

echo Часть файлов держит другая программа — планирую удаление при перезагрузке...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$s='[System.Runtime.InteropServices.DllImport(\"kernel32.dll\",CharSet=[System.Runtime.InteropServices.CharSet]::Unicode,SetLastError=$true)]public static extern bool MoveFileEx(string a,string b,int f);'; $k=Add-Type -MemberDefinition $s -Name K -Namespace W -PassThru; $t=$env:RUTP_TARGET; Get-ChildItem -LiteralPath $t -Recurse -Force -ErrorAction SilentlyContinue | Sort-Object FullName -Descending | ForEach-Object { [void]$k::MoveFileEx($_.FullName,$null,4) }; [void]$k::MoveFileEx($t,$null,4)"
echo Готово. Остатки исчезнут после перезагрузки.
ping -n 4 127.0.0.1 >nul
del "%~f0" >nul 2>&1
exit /b
