Add safe split tunneling driver deletion

This commit is contained in:
aiamnezia
2026-03-16 15:46:58 +04:00
parent c91a70b1a2
commit 193d3e8f80
2 changed files with 54 additions and 18 deletions
+27 -9
View File
@@ -9,15 +9,12 @@ set "SYS_APP_DIR=%ProgramData%\AmneziaVPN"
set "SYS_LOG_DIR=%SYS_APP_DIR%\log"
set "SYS_LOG_FILE=%SYS_LOG_DIR%\AmneziaVPN-service.log"
timeout /t 1
sc stop AmneziaVPN-service
sc delete AmneziaVPN-service
sc stop AmneziaWGTunnel$AmneziaVPN
sc delete AmneziaWGTunnel$AmneziaVPN
sc stop AmneziaVPNSplitTunnel
sc delete AmneziaVPNSplitTunnel
taskkill /IM "AmneziaVPN-service.exe" /F
taskkill /IM "AmneziaVPN.exe" /F
timeout /t 1 >nul
call :stop_and_delete_service "AmneziaVPN-service"
call :stop_and_delete_service "AmneziaWGTunnel$AmneziaVPN"
taskkill /IM "AmneziaVPN-service.exe" /F >nul 2>&1
taskkill /IM "AmneziaVPN.exe" /F >nul 2>&1
call :remove_split_tunnel_driver
rem Delete the service log file under ProgramData
if exist "%SYS_LOG_FILE%" del /F /Q "%SYS_LOG_FILE%"
@@ -32,3 +29,24 @@ rd "%USER_APP_DIR%" 2>nul
rd "%ORG_DIR%" 2>nul
exit /b 0
:stop_and_delete_service
set "SVC_NAME=%~1"
sc query "%SVC_NAME%" >nul 2>&1 || goto :eof
sc stop "%SVC_NAME%" >nul 2>&1
for /l %%i in (1,1,15) do (
sc query "%SVC_NAME%" | find "STOPPED" >nul 2>&1 && goto :delete_service
timeout /t 1 /nobreak >nul
)
:delete_service
sc delete "%SVC_NAME%" >nul 2>&1
goto :eof
:remove_split_tunnel_driver
sc query "AmneziaVPNSplitTunnel" >nul 2>&1 || goto :eof
rem Explicit stop may trigger BSOD on some systems; delete safely instead.
sc config "AmneziaVPNSplitTunnel" start= disabled >nul 2>&1
sc delete "AmneziaVPNSplitTunnel" >nul 2>&1
goto :eof
+27 -9
View File
@@ -9,15 +9,12 @@ set "SYS_APP_DIR=%ProgramData%\AmneziaVPN"
set "SYS_LOG_DIR=%SYS_APP_DIR%\log"
set "SYS_LOG_FILE=%SYS_LOG_DIR%\AmneziaVPN-service.log"
timeout /t 1
sc stop AmneziaVPN-service
sc delete AmneziaVPN-service
sc stop AmneziaWGTunnel$AmneziaVPN
sc delete AmneziaWGTunnel$AmneziaVPN
sc stop AmneziaVPNSplitTunnel
sc delete AmneziaVPNSplitTunnel
taskkill /IM "AmneziaVPN-service.exe" /F
taskkill /IM "AmneziaVPN.exe" /F
timeout /t 1 >nul
call :stop_and_delete_service "AmneziaVPN-service"
call :stop_and_delete_service "AmneziaWGTunnel$AmneziaVPN"
taskkill /IM "AmneziaVPN-service.exe" /F >nul 2>&1
taskkill /IM "AmneziaVPN.exe" /F >nul 2>&1
call :remove_split_tunnel_driver
rem Delete the service log file under ProgramData
if exist "%SYS_LOG_FILE%" del /F /Q "%SYS_LOG_FILE%"
@@ -32,3 +29,24 @@ rd "%USER_APP_DIR%" 2>nul
rd "%ORG_DIR%" 2>nul
exit /b 0
:stop_and_delete_service
set "SVC_NAME=%~1"
sc query "%SVC_NAME%" >nul 2>&1 || goto :eof
sc stop "%SVC_NAME%" >nul 2>&1
for /l %%i in (1,1,15) do (
sc query "%SVC_NAME%" | find "STOPPED" >nul 2>&1 && goto :delete_service
timeout /t 1 /nobreak >nul
)
:delete_service
sc delete "%SVC_NAME%" >nul 2>&1
goto :eof
:remove_split_tunnel_driver
sc query "AmneziaVPNSplitTunnel" >nul 2>&1 || goto :eof
rem Explicit stop may trigger BSOD on some systems; delete safely instead.
sc config "AmneziaVPNSplitTunnel" start= disabled >nul 2>&1
sc delete "AmneziaVPNSplitTunnel" >nul 2>&1
goto :eof