# portProxy **Repository Path**: looksnow/portProxy ## Basic Information - **Project Name**: portProxy - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-20 - **Last Updated**: 2026-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows 端口转发管理器 基于 PyQt6 的可视化 Windows 端口转发管理工具,封装 `netsh interface portproxy` 命令为图形界面。 ## 功能特性 | 特性 | 说明 | |------|------| | 规则管理 | 添加、删除 IPv4 端口转发规则 | | 启停控制 | 每条规则独立的「运行中 / 已停止」状态,滑动开关一键切换 | | 配置持久化 | 规则保存于本地 `rules.json`,重启不丢失 | | 自动同步 | 启动时自动将「启用」状态的规则推送到系统 | | 分页展示 | 每页 10 条,支持上下页切换 | | 实时搜索 | 输入关键词即时过滤地址与端口 | | 管理员提权 | 自动检测并以管理员身份重启(UAC) | ## 环境要求 - Python 3.10+ - Windows 系统(依赖 `netsh`) - 管理员权限(`netsh interface portproxy` 必需) ## 项目结构 ``` portProxy/ ├── main.py # 入口(含 UAC 提权逻辑) ├── icon.ico # 应用程序图标(已生成) ├── rules.json # 规则配置(运行时自动生成) ├── generate_icon.py # 图标生成脚本(可选) ├── core/ │ └── port_proxy_manager.py # netsh 封装与配置管理 ├── ui/ │ ├── main_window.py # 主窗口(表格、分页、搜索、开关) │ ├── add_rule_dialog.py # 添加规则对话框 │ └── toggle_switch.py # 自定义滑动开关控件 ├── README.md └── .venv/ # 虚拟环境 ``` ## 快速开始 ### 1. 环境准备 ```bash python -m venv .venv .venv\Scripts\pip install PyQt6 ``` ### 2. 开发运行 ```bash .venv\Scripts\python main.py ``` 首次启动时若未以管理员身份运行,应用会自动弹出 UAC 提权对话框并以管理员身份重启自身。 ### 3. 打包发布 安装打包工具: ```bash .venv\Scripts\pip install pyinstaller ``` #### 推荐:目录模式 + UAC 清单 + 图标 ```bash pyinstaller \ --noconfirm \ --windowed \ --uac-admin \ --icon "icon.ico" \ --name "PortProxyManager" \ main.py ``` - **目录模式**:启动快、稳定性高,适合生产分发 - **`--uac-admin`**:双击直接弹出 UAC,无需代码内重启机制 - **`--icon "icon.ico"`**:资源管理器中显示自定义图标 打包产物位于 `dist\PortProxyManager\`,将整个文件夹压缩分发即可。 #### 备选:单文件模式 ```bash pyinstaller \ --noconfirm \ --onefile \ --windowed \ --uac-admin \ --icon "icon.ico" \ --name "PortProxyManager" \ main.py ``` > **注意**:单文件体积大、启动慢,且依赖临时解压目录。若未使用 `--uac-admin`,代码内的 `ShellExecuteW` 重启机制可能因临时目录变化而偶发异常。**强烈建议生产环境使用目录模式 + `--uac-admin`**。 ## 图标说明 项目已包含 `icon.ico`(含 16/24/32/48/64/128/256 多尺寸),可直接用于打包 `--icon` 参数。 如需重新生成(依赖 Pillow): ```bash python generate_icon.py ``` ## 数据持久化 - 规则配置保存在程序同目录的 `rules.json` 中。 - 首次启动时若 `rules.json` 不存在,程序自动从系统当前 `netsh` 规则导入。 - 打包后的分发版本,`rules.json` 与 `.exe` 位于同一目录,配置随包保留。 ## 常见问题 **Q:运行时提示「添加/删除规则失败」?** A:确认应用拥有管理员权限。开发模式下应用会自动请求 UAC;若打包后未用 `--uac-admin`,请右键 exe →「以管理员身份运行」。 **Q:如何彻底清空所有规则?** A:删除程序目录下的 `rules.json` 并重启。应用会自动同步,系统 netsh 中对应的规则将被移除。 **Q:杀毒软件误报?** A:PyInstaller 的引导加载器特征较常见,部分国产杀毒可能误报。可提交误报申诉,或改用 Nuitka 等 AOT 编译工具重新打包。 **Q:打包后只有窗口有图标,资源管理器里的 exe 没有?** A:动态图标仅在窗口内部生效。资源管理器级别的 exe 图标必须通过 `--icon "icon.ico"` 传入,详见「打包发布」章节。 ## 依赖 | 包 | 用途 | |--|--| | PyQt6 | GUI 框架(运行时必需) | | pyinstaller | 打包工具(仅打包时需要) | | Pillow | 图标生成(仅重新生成 icon.ico 时需要) | ## License MIT