@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' NEQ '0' (
    echo 正在请求管理员权限...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%cd%"
    CD /D "%~dp0"

echo 正在开放 TCP 10808-20808 端口...
powershell -Command "New-NetFirewallRule -DisplayName 'Allow TCP 10808-20808' -Direction Inbound -Protocol TCP -LocalPort 10808-20808 -Action Allow"

echo 正在开放 UDP 10808-20808 端口...
powershell -Command "New-NetFirewallRule -DisplayName 'Allow UDP 10808-20808' -Direction Inbound -Protocol UDP -LocalPort 10808-20808 -Action Allow"

echo 端口开放完成。
pause