Skip to content
ygy2200Public

About

Windows NIC egress switcher: WiFi-first when Ethernet+WiFi coexist. tkinter GUI, zero dependencies.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

NicSwitch

Windows 网卡出口一键切换工具 —— 插着网线也能让默认流量走 WiFi,图形界面单文件零依赖。

为什么需要它

Windows 的多网卡选路靠跃点数(InterfaceMetric)竞争:有线网卡自动基数小(25),WiFi 大(30~50),数值小者赢。所以网线 + WiFi 同时连接时,流量永远走网线——WiFi 只是挂着,根本不承担流量。

想临时改走 WiFi(比如 WiFi 是另一条独立出口),只能进适配器设置改跃点数,操作繁琐还容易忘恢复。NicSwitch 把它变成两次点击:

  • WiFi 优先模式:把 WLAN 跃点数固定为 10(手动)→ 网线+WiFi 并存时默认走 WiFi,持久生效(重启/重连不丢,微软文档确认该设置存储在活动策略存储)
  • 恢复系统默认:WLAN 回到自动跃点,与装机默认逐位一致
  • 想换回,再跑一次恢复即可——系统里只留下这一个静态值,无任何后台/自启

功能

  • 深色图形界面(tkinter,Python 标准库自带,零第三方依赖)
  • 状态徽章:当前模式 / WiFi 未连接提醒 / 网卡连接状态与跃点数 / 出口公网 IP
  • 10 秒自动刷新,运行期间网络变化实时可见
  • 切换执行中自动禁用按钮防误触;已设置时"切到 WiFi 优先"自动置灰
  • 无黑窗(全部子进程 CREATE_NO_WINDOW)
  • 附带 3 个命令行 bat(切热点优先 / 恢复默认 / 查看状态),适合脚本化场景

使用方法

要求:Windows 10/11 + Python 3.8+(仅标准库)

  1. 下载 switch_gui.py 和 nic-switch.ps1 放同一目录
  2. 双击运行(或 pythonw switch_gui.py 隐藏控制台)→ UAC 点"是"
  3. 点按钮切换

命令行方式(管理员):

powershell -NoProfile -ExecutionPolicy Bypass -File nic-switch.ps1 hotspot   # WiFi 优先
powershell -NoProfile -ExecutionPolicy Bypass -File nic-switch.ps1 restore   # 恢复默认
powershell -NoProfile -ExecutionPolicy Bypass -File nic-switch.ps1 status    # 查看状态

双击 切热点优先.bat / 恢复校园网默认.bat / 查看网络状态.bat 同效(自动弹 UAC)。

原理

生效(hotspot):  Set-NetIPInterface -InterfaceAlias WLAN -InterfaceMetric 10
                  → 自动跃点关闭(Disabled),手动值 10 < 有线自动值 25 → WiFi 恒赢
恢复(restore):  Set-NetIPInterface -InterfaceAlias WLAN -AutomaticMetric Enabled
                  → 回到系统按链路速度自动计算,装机默认状态

只改"选路权重",不动 IP/DNS/任何网卡配置;速度由被选中链路自身决定,与跃点数值无关。

已知边界

  • WiFi 优先模式下全部流量走 WiFi:若 WiFi 是手机热点,注意流量消耗;校园网内网资源(10.x 地址)可能不通——本工具不提供分流,需要"内网走有线、特定流量走 WiFi 并存"的请搜索 clash/mihomo 的 interface-name 绑定方案
  • 固定 metric 后 WiFi 优先不再随链路速度自适应(连上更慢的 WiFi 也会优先它),恢复默认即回到自动
  • 接口名硬编码为中文系统默认名 WLAN / 以太网,被改名过会自动按网卡描述(Wi-Fi/Wireless/802.11)兜底匹配

兼容性备注

  • 中文系统接口名(WLAN/以太网)为第一优先匹配;英文系统用户若匹配失败请手动改名或提交 issue
  • PowerShell 5.1(系统自带)即可,无需升级
  • 提权环境下 Get-NetIPInterface -InterfaceAlias 存在 CIM 查询异常(WHERE 条件被搅坏),故本工具全部按 InterfaceIndex 整数键操作,免疫此坑

License

MIT

About

Windows NIC egress switcher: WiFi-first when Ethernet+WiFi coexist. tkinter GUI, zero dependencies.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages