import sys import winreg def get_current_proxy(): """获取当前系统代理设置""" try: internet_settings = winreg.OpenKey( winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Internet Settings', 0, winreg.KEY_READ ) proxy_server, _ = winreg.QueryValueEx(internet_settings, 'ProxyServer') proxy_enable, _ = winreg.QueryValueEx(internet_settings, 'ProxyEnable') winreg.CloseKey(internet_settings) return { 'enabled': bool(proxy_enable), 'server': proxy_server } except FileNotFoundError: return {'enabled': False, 'server': ''} except Exception as e: print(f"获取代理设置失败: {e}") return {'enabled': False, 'server': ''} def set_proxy(proxy_host, proxy_port): """设置系统代理""" try: internet_settings = winreg.OpenKey( winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Internet Settings', 0, winreg.KEY_ALL_ACCESS ) proxy_server = f'{proxy_host}:{proxy_port}' winreg.SetValueEx(internet_settings, 'ProxyServer', 0, winreg.REG_SZ, proxy_server) winreg.SetValueEx(internet_settings, 'ProxyEnable', 0, winreg.REG_DWORD, 1) winreg.CloseKey(internet_settings) print(f"✅ 系统代理已设置为: {proxy_server}") return True except Exception as e: print(f"❌ 设置代理失败: {e}") return False def unset_proxy(): """取消系统代理""" try: internet_settings = winreg.OpenKey( winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Internet Settings', 0, winreg.KEY_ALL_ACCESS ) winreg.SetValueEx(internet_settings, 'ProxyEnable', 0, winreg.REG_DWORD, 0) winreg.CloseKey(internet_settings) print("✅ 系统代理已取消") return True except Exception as e: print(f"❌ 取消代理失败: {e}") return False def show_status(): """显示当前代理状态""" proxy = get_current_proxy() print("\n当前代理状态:") print(f" 代理已启用: {'是' if proxy['enabled'] else '否'}") if proxy['enabled']: print(f" 代理服务器: {proxy['server']}") print() def main(): if len(sys.argv) < 2: print("=" * 50) print(" Windows系统代理管理脚本") print("=" * 50) print("用法:") print(f" {sys.argv[0]} status - 查看当前代理状态") print(f" {sys.argv[0]} set - 设置代理服务器") print(f" {sys.argv[0]} unset - 取消代理设置") print(f" {sys.argv[0]} localhost - 快速设置为 localhost:8080") print("\n示例:") print(f" {sys.argv[0]} set 192.168.1.50 8080") print(f" {sys.argv[0]} localhost") print(f" {sys.argv[0]} unset") print("=" * 50) return command = sys.argv[1].lower() if command == 'status': show_status() elif command == 'set': if len(sys.argv) < 4: print("❌ 参数不足,请提供代理服务器地址和端口") print(f" 示例: {sys.argv[0]} set 192.168.1.50 8080") return proxy_host = sys.argv[2] proxy_port = sys.argv[3] set_proxy(proxy_host, proxy_port) elif command == 'unset': unset_proxy() elif command == 'localhost': set_proxy('localhost', '8080') else: print(f"❌ 未知命令: {command}") if __name__ == '__main__': main()