
HY
折腾进行时
Hello, I'm HY.
Windows 全局 IPv6 一键开关脚本。深入 TCP/IP 协议栈改写注册表 DisabledComponents,彻底解决虚拟网卡(Clash TUN / VPN)频繁自动重新勾选 IPv6 的顽疾,支持交互模式与 CLI 命令行静默调用。

一键开关 Windows 全局 IPv6 的小脚本,专治「网卡属性里取消勾选 IPv6,过一会儿又自己勾回去」。
很多时候我们需要临时或长期关闭 Windows 上的 IPv6(例如某些校园网、特定内网环境、BT 下载流量走错接口,或是代理软件的 DNS / 路由分流异常)。
但经常会遇到一个极其烦人的现象:在网络适配器属性里明明去掉了「Internet 协议版本 6 (TCP/IPv6)」的勾选,没过多久它又自己悄悄勾回去了!
在 Windows 的网络适配器属性里取消勾选,本质上只是对该网卡执行了解绑(Unbind),并没有在系统层关闭 IPv6 协议栈。以下常见场景都会让它重新“诈尸”:
wintun 驱动的软件(如 Clash Verge、Mihomo Party、Meta Tunnel、各类 VPN),每次开关 TUN 模式或切换节点都会销毁并重建虚拟网卡,新网卡的绑定状态直接恢复为系统默认;彻底可靠的做法是从注册表总开关入手:
1HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters2 DisabledComponents (REG_DWORD)3 255 (0xFF) -> 全系统彻底关闭 IPv64 0 (0x00) -> 恢复启用 IPv6该注册表项直接作用于 Windows 的 TCP/IP 协议栈底层,优先级高于任何单块网卡的绑定状态。一旦设置为 0xFF,即便后续新建任何虚拟网卡(如 TUN/TAP),协议栈本身也绝不会加载 IPv6,彻底压制死灰复燃。
直接双击 ipv6-toggle.bat 运行:
1================ 当前状态 ================2 IPv6 状态 : IPv6 已开启3 注册表值 : DisabledComponents = 0x0 (0)4 网卡绑定 : 5 / 5 块网卡勾着 IPv65==========================================6
7y = 打开 IPv6 | n = 关闭 IPv6 | 回车或其它 = 不改,直接退出 请输入:y:启用全局 IPv6;n:关闭全局 IPv6;提示:修改注册表协议栈后需要重启系统才能完全生效。脚本修改完成后会提示是否立即重启(输入
y会进入 15 秒安全倒计时,回车则可稍后自行重启)。
除了双击交互,脚本还支持带参直接执行,非常适合集成到快捷方式、自动化脚本或任务计划中:
1ipv6-toggle.bat status :: 只查看当前状态,不修改任何配置(无需管理员权限)2ipv6-toggle.bat on :: 打开 IPv63ipv6-toggle.bat off :: 关闭 IPv64ipv6-toggle.bat :: 不带参数直接进入交互模式1.\IPv6-Toggle.ps1 # 交互模式2.\IPv6-Toggle.ps1 -Action Status # 查看状态3.\IPv6-Toggle.ps1 -Action Off # 关闭 IPv64.\IPv6-Toggle.ps1 -Action On # 开启 IPv65.\IPv6-Toggle.ps1 -Action Off -Restart # 关闭并立即触发重启(15秒倒计时)参数 -Action 支持:Off / On / Status / Interactive(默认)。
为了在各种 Windows 环境下开箱即用且不报错,脚本在实现上做了几处细致考量:
.bat 入口使用 -ExecutionPolicy Bypass 单次绕过系统脚本执行策略,用户电脑无需全局放开 Set-ExecutionPolicy;Start-Process -Verb RunAs 自提权并继承参数。1ipv6-switch/2├── IPv6-Toggle.ps1 # 核心 PowerShell 脚本(状态检测、注册表读写、网卡绑定适配)3├── ipv6-toggle.bat # 双击/命令行便捷入口(自动绕过执行策略与调用)4└── README.md # 项目说明文档两个文件放在同一目录下即可使用。