From 193d3e8f807909d20767d5e016a8c80439ef95ba Mon Sep 17 00:00:00 2001 From: aiamnezia Date: Mon, 16 Mar 2026 15:46:58 +0400 Subject: [PATCH] Add safe split tunneling driver deletion --- deploy/data/windows/x32/post_uninstall.cmd | 36 ++++++++++++++++------ deploy/data/windows/x64/post_uninstall.cmd | 36 ++++++++++++++++------ 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/deploy/data/windows/x32/post_uninstall.cmd b/deploy/data/windows/x32/post_uninstall.cmd index a44d9be00..55caa6f65 100644 --- a/deploy/data/windows/x32/post_uninstall.cmd +++ b/deploy/data/windows/x32/post_uninstall.cmd @@ -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 diff --git a/deploy/data/windows/x64/post_uninstall.cmd b/deploy/data/windows/x64/post_uninstall.cmd index a44d9be00..55caa6f65 100644 --- a/deploy/data/windows/x64/post_uninstall.cmd +++ b/deploy/data/windows/x64/post_uninstall.cmd @@ -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