熬夜整活!Windows 代理一键切换器(VBS 版)
半夜被朋友薅起来写的小工具,主打一个「懒人福音」—— 不用手动翻系统设置,双击就能一键切换代理状态,旁路代理用户直接抄作业!代码开源,大家随便玩~
🛠️ 工具功能
一键开启 / 关闭系统代理
自动读取当前代理状态并提示
预设内网 IP 段绕过规则(192.168/10/172.16-31 段 + 本地回环)
操作结果弹窗提示(5 秒自动关闭)
📝 食用方法
复制下方代码,用记事本打开
修改代理服务器地址(标注处)
保存为
.vbs格式,编码必须选 ANSI双击运行,弹窗选择「是」开代理 /「否」关代理
💻 完整代码(直接抄)
Option Explicit
' 创建 Shell 对象,用于注册表操作和弹窗提示
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
' 代理相关注册表路径常量
Const PROXY_ENABLE = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
Const PROXY_SERVER = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer"
Const PROXY_OVERRIDE = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride"
' ========== 核心配置(按需修改)==========
' 代理服务器地址+端口,例:192.168.0.1:7890、localhost:8888
Const PROXY_SERVER_ADDR = "192.168.0.1:7890"
' 绕过代理的内网地址段(无需修改可直接用)
Const PROXY_OVERRIDE_VAL = "192.168.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;127.0.0.1"
' =========================================
' 获取当前代理状态
Dim currentProxyStatus
currentProxyStatus = GetProxyStatus()
' 弹出操作选择框
Dim choice
choice = MsgBox("当前代理状态: " & currentProxyStatus & vbCrLf & "请选择操作:", _
vbYesNo + vbQuestion, _
"代理一键切换器")
' 执行对应操作
If choice = vbYes Then
EnableProxy ' 点击「是」= 开启代理
ElseIf choice = vbNo Then
DisableProxy ' 点击「否」= 关闭代理
End If
' 【函数】读取当前代理状态
Function GetProxyStatus()
On Error Resume Next
Dim proxyEnabled
proxyEnabled = wshShell.RegRead(PROXY_ENABLE)
If proxyEnabled = 1 Then
GetProxyStatus = "已启用"
Else
GetProxyStatus = "已禁用"
End If
On Error Goto 0
End Function
' 【子程序】启用代理
Sub EnableProxy()
On Error Resume Next
wshShell.RegWrite PROXY_ENABLE, 1, "REG_DWORD" ' 开启代理开关
wshShell.RegWrite PROXY_SERVER, PROXY_SERVER_ADDR, "REG_SZ" ' 设置代理地址
wshShell.RegWrite PROXY_OVERRIDE, PROXY_OVERRIDE_VAL, "REG_SZ" ' 设置绕过规则
' 结果提示
If Err.Number = 0 Then
wshShell.Popup "代理已成功打开!", 5, "操作成功", vbInformation
Else
wshShell.Popup "打开代理失败:" & Err.Description, 5, "错误", vbCritical
End If
On Error Goto 0
End Sub
' 【子程序】禁用代理
Sub DisableProxy()
On Error Resume Next
wshShell.RegWrite PROXY_ENABLE, 0, "REG_DWORD" ' 关闭代理开关
' 结果提示
If Err.Number = 0 Then
wshShell.Popup "代理已成功关闭!", 5, "操作成功", vbInformation
Else
wshShell.Popup "关闭代理失败:" & Err.Description, 5, "错误", vbCritical
End If
On Error Goto 0
End Sub关键说明
核心修改处:找到代码里「核心配置」区的
PROXY_SERVER_ADDR,替换成你自己的代理地址 + 端口(比如 Clash 默认 7890、Surge 默认 8888);绕过规则:预设的内网段已经覆盖大部分场景,如需新增 / 删减,直接在
PROXY_OVERRIDE_VAL里用分号分隔即可;权限问题:如果提示修改失败,右键以管理员身份运行;
适用范围:修改的是当前用户(HKCU)的 IE / 系统代理设置,主流浏览器(Chrome/Edge/Firefox)默认跟随系统代理即可生效。

本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果