半夜被朋友薅起来写的小工具,主打一个「懒人福音」—— 不用手动翻系统设置,双击就能一键切换代理状态,旁路代理用户直接抄作业!代码开源,大家随便玩~

🛠️ 工具功能

  • 一键开启 / 关闭系统代理

  • 自动读取当前代理状态并提示

  • 预设内网 IP 段绕过规则(192.168/10/172.16-31 段 + 本地回环)

  • 操作结果弹窗提示(5 秒自动关闭)

📝 食用方法

  1. 复制下方代码,用记事本打开

  2. 修改代理服务器地址(标注处)

  3. 保存为 .vbs 格式,编码必须选 ANSI

  4. 双击运行,弹窗选择「是」开代理 /「否」关代理

💻 完整代码(直接抄)

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

关键说明

  1. 核心修改处:找到代码里「核心配置」区的 PROXY_SERVER_ADDR,替换成你自己的代理地址 + 端口(比如 Clash 默认 7890、Surge 默认 8888);

  2. 绕过规则:预设的内网段已经覆盖大部分场景,如需新增 / 删减,直接在 PROXY_OVERRIDE_VAL 里用分号分隔即可;

  3. 权限问题:如果提示修改失败,右键以管理员身份运行;

  4. 适用范围:修改的是当前用户(HKCU)的 IE / 系统代理设置,主流浏览器(Chrome/Edge/Firefox)默认跟随系统代理即可生效。

微信截图_20250814233816.png