[python]一键设置系统代理

import os
import sys
import ctypes
import platform

# 检查操作系统
if platform.system() != "Windows":
    print("此脚本仅适用于Windows系统")
    input("按回车键退出...")
    sys.exit(1)

try:
    import winreg
except ImportError:
    print("此脚本需要Windows环境")
    input("按回车键退出...")
    sys.exit(1)

def is_admin():
    """检查是否以管理员权限运行"""
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

def set_proxy(enable, proxy_server=None):
    """设置系统代理"""
    try:
        # 打开Internet设置注册表键
        internet_settings = winreg.OpenKey(
            winreg.HKEY_CURRENT_USER,
            r"Software\Microsoft\Windows\CurrentVersion\Internet Settings",
            0, winreg.KEY_WRITE
        )
        
        # 设置代理启用状态
        winreg.SetValueEx(internet_settings, "ProxyEnable", 0, winreg.REG_DWORD, 1 if enable else 0)
        
        # 如果启用代理,设置代理服务器地址
        if enable and proxy_server:
            winreg.SetValueEx(internet_settings, "ProxyServer", 0, winreg.REG_SZ, proxy_server)
        
        winreg.CloseKey(internet_settings)
        
        # 通知系统设置已更改
        internet_setting_changed = 0x0000002A  # INTERNET_OPTION_SETTINGS_CHANGED
        ctypes.windll.Wininet.InternetSetOptionW(0, internet_setting_changed, 0, 0)
        
        return True
    except Exception as e:
        print(f"设置代理时出错: {e}")
        return False

def main():
    # 检查管理员权限
    if not is_admin():
        print("请以管理员权限运行此程序")
        input("按回车键退出...")
        sys.exit(1)
    
    # 显示选项
    print("=" * 40)
    print("系统代理设置工具")
    print("=" * 40)
    print("1. 不使用代理")
    print("2. 设置代理为 127.0.0.1:6666")
    print("=" * 40)
    
    # 获取用户选择
    choice = input("请选择 (1 或 2): ")
    
    if choice == "1":
        # 禁用代理
        if set_proxy(False):
            print("已成功禁用系统代理")
        else:
            print("禁用代理失败")
    elif choice == "2":
        # 启用代理并设置为127.0.0.1:6666
        if set_proxy(True, "127.0.0.1:6666"):
            print("已成功设置系统代理为 127.0.0.1:6666")
        else:
            print("设置代理失败")
    else:
        print("无效选择,请输入 1 或 2")
    
    input("按回车键退出...")

if __name__ == "__main__":
    main()