@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"

:: 开始网络修复
chcp 65001 >nul
echo ================================
echo Windows 网络问题修复工具
echo 支持win7、win8、win10、win11
echo ================================
echo.

:: 1. 重置 TCP/IP 协议栈
echo [1/7] 正在重置 TCP/IP 协议栈...
netsh int ip reset
echo 完成！
echo.

:: 2. 重置 Winsock 目录
echo [2/7] 正在重置 Winsock 目录...
netsh winsock reset
echo 完成！
echo.

:: 3. 释放当前 IP 地址
echo [3/7] 正在释放当前 IP 地址...
ipconfig /release
echo 完成！
echo.

:: 4. 重新获取 IP 地址
echo [4/7] 正在重新获取 IP 地址...
ipconfig /renew
echo 完成！
echo.

:: 5. 刷新 DNS 缓存
echo [5/7] 正在刷新 DNS 缓存...
ipconfig /flushdns
echo 完成！
echo.

:: 6. 重置 IPv4 设置
echo [6/7] 正在重置 IPv4 设置...
netsh int ipv4 reset reset.log
echo 完成！
echo.

:: 7. 重置 IPv6 设置
echo [7/7] 正在重置 IPv6 设置...
netsh int ipv6 reset reset.log
echo 完成！
echo.

echo ================================
echo 网络重置完成！
echo 请重启计算机以完全生效。
echo ================================
echo.
pause