@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

echo.
echo ============================================================
echo   OmenSuperHub 清理脚本
echo ============================================================
echo.
 
:: ============================================================
::  1. 退出 OmenSuperHub 进程，等待完全终止
:: ============================================================
echo [步骤 1/4] 退出 OmenSuperHub 进程...
 
tasklist /fi "imagename eq OmenSuperHub.exe" 2>nul | find /i "OmenSuperHub.exe" >nul
if %errorlevel% equ 0 (
    taskkill /f /im OmenSuperHub.exe >nul 2>&1
    :: 等待进程完全退出（最多 5 秒）
    set /a WAIT=0
    :WAIT_LOOP
    tasklist /fi "imagename eq OmenSuperHub.exe" 2>nul | find /i "OmenSuperHub.exe" >nul
    if %errorlevel% equ 0 (
        if !WAIT! lss 10 (
            timeout /t 1 /nobreak >nul
            set /a WAIT+=2
            goto WAIT_LOOP
        ) else (
            echo   - [警告] 进程未能在 5 秒内退出，继续执行清理。
        )
    ) else (
        echo   - 已成功退出 OmenSuperHub.exe 进程。
    )
) else (
    echo   - OmenSuperHub.exe 未在运行，跳过。
)
echo.

:: ============================================================
::  2. 删除注册表项
:: ============================================================
echo [步骤 2/4] 清理注册表...
 
:: 2-1. 主配置键（当前用户）
reg query "HKCU\Software\OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    reg delete "HKCU\Software\OmenSuperHub" /f >nul 2>&1
    echo   - 已删除：HKCU\Software\OmenSuperHub
) else (
    echo   - 不存在：HKCU\Software\OmenSuperHub，跳过。
)
 
:: 2-2. 旧版开机自启项（HKLM WOW6432Node）
reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    reg delete "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" /f >nul 2>&1
    echo   - 已删除：HKLM\SOFTWARE\WOW6432Node\...\Run\OmenSuperHub
) else (
    echo   - 不存在：HKLM\SOFTWARE\WOW6432Node\...\Run\OmenSuperHub，跳过。
)
 
:: 2-3. 标准开机自启项（HKLM）
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" /f >nul 2>&1
    echo   - 已删除：HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\OmenSuperHub
) else (
    echo   - 不存在：HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\OmenSuperHub，跳过。
)
 
:: 2-4. 当前用户开机自启项（HKCU）
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "OmenSuperHub" /f >nul 2>&1
    echo   - 已删除：HKCU\Software\Microsoft\Windows\CurrentVersion\Run\OmenSuperHub
) else (
    echo   - 不存在：HKCU\Software\Microsoft\Windows\CurrentVersion\Run\OmenSuperHub，跳过。
)
echo.
 
:: ============================================================
::  3. 删除计划任务
:: ============================================================
echo [步骤 3/4] 删除计划任务...
 
:: 3-1. 新版任务：系统启动时运行
schtasks /query /tn "OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    schtasks /delete /tn "OmenSuperHub" /f >nul 2>&1
    echo   - 已删除计划任务：OmenSuperHub
) else (
    echo   - 不存在计划任务：OmenSuperHub，跳过。
)
 
:: 3-2. 新版任务：用户登录时重启
schtasks /query /tn "OmenSuperHub_Logon" >nul 2>&1
if %errorlevel% equ 0 (
    schtasks /delete /tn "OmenSuperHub_Logon" /f >nul 2>&1
    echo   - 已删除计划任务：OmenSuperHub_Logon
) else (
    echo   - 不存在计划任务：OmenSuperHub_Logon，跳过。
)
 
:: 3-3. 旧版任务：Omen Boot
schtasks /query /tn "Omen Boot" >nul 2>&1
if %errorlevel% equ 0 (
    schtasks /delete /tn "Omen Boot" /f >nul 2>&1
    echo   - 已删除计划任务：Omen Boot（旧版）
) else (
    echo   - 不存在计划任务：Omen Boot（旧版），跳过。
)
echo.
 
:: ============================================================
::  4. 删除风扇配置文件及其他生成文件
:: ============================================================
echo [步骤 4/4] 删除风扇配置文件及其他生成文件...
 
:: 4-1. 旧版 SysWOW64 路径下的风扇配置文件
set "SYSWOW64=C:\Windows\SysWOW64"
for %%F in (silent.txt cool.txt) do (
    if exist "%SYSWOW64%\%%F" (
        del /f /q "%SYSWOW64%\%%F" >nul 2>&1
        echo   - 已删除：%SYSWOW64%\%%F
    ) else (
        echo   - 不存在：%SYSWOW64%\%%F，跳过。
    )
)
 
:: 4-2. 程序目录下的生成文件（以脚本所在目录为基准）
set "APPDIR=%~dp0"
if "%APPDIR:~-1%"=="\" set "APPDIR=%APPDIR:~0,-1%"
 
for %%F in (silent.txt cool.txt error.log custom_icon.ico) do (
    if exist "%APPDIR%\%%F" (
        del /f /q "%APPDIR%\%%F" >nul 2>&1
        echo   - 已删除：%APPDIR%\%%F
    ) else (
        echo   - 不存在：%APPDIR%\%%F，跳过。
    )
)
 
:: 4-3. 本地数据目录（DataLocalize 功能可能写入的文件）
set "LOCALDATA=%LOCALAPPDATA%\OmenSuperHub"
if exist "%LOCALDATA%" (
    rd /s /q "%LOCALDATA%" >nul 2>&1
    if exist "%LOCALDATA%" (
        echo   - [警告] 无法删除本地数据目录：%LOCALDATA%
    ) else (
        echo   - 已删除本地数据目录：%LOCALDATA%
    )
) else (
    echo   - 不存在本地数据目录：%LOCALDATA%，跳过。
)
echo.
 
:: ============================================================
::  验证清理结果
:: ============================================================
echo 验证清理结果...
set CLEAN=1
 
reg query "HKCU\Software\OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    echo   [!] 注册表项仍存在：HKCU\Software\OmenSuperHub
    set CLEAN=0
)
 
schtasks /query /tn "OmenSuperHub" >nul 2>&1
if %errorlevel% equ 0 (
    echo   [!] 计划任务仍存在：OmenSuperHub
    set CLEAN=0
)
 
schtasks /query /tn "OmenSuperHub_Logon" >nul 2>&1
if %errorlevel% equ 0 (
    echo   [!] 计划任务仍存在：OmenSuperHub_Logon
    set CLEAN=0
)
 
if "!CLEAN!"=="1" (
    echo   所有项目已成功清理。
)
 
echo.
echo ============================================================
echo   清理完成！
echo   注意：程序主体 OmenSuperHub.exe 及其 DLL 文件未被删除，
echo         如需彻底卸载请手动删除程序所在文件夹。
echo ============================================================
echo.
pause
endlocal