轻量 GUI 工具,用于在 Hyper-V 虚拟机中管理代理设置。特点:
- 单文件发布,便于分发和使用。
- 充分简化代理设置方式,只包含“设置”与“禁用”两个功能。
- 通过 WPF-UI 实现现代化的界面,支持 Mica 背景和颜色模式切换。
- 使用自绘 UI 实现现代化的系统托盘菜单,支持颜色模式切换。
主界面(浅色模式)截图:
系统托盘菜单(深色模式)截图:
两张截图均在非 Hyper-V 虚拟机下获取,因此无法呈现代理设置功能。
- 代理设置
- 使用默认连接方式时,Hyper-V 虚拟机会以宿主机的 IPv4 地址为 IPv4 网关。
- 通过扫描虚拟机的网络设置,获取 IPv4 网关地址,即可获取宿主机在虚拟局域网内的地址。
- 当宿主机的代理提供程序支持局域网连接时,虚拟机可以设置其代理服务器为宿主机的虚拟局域网地址,从而实现代理功能。
- 本工具通过修改注册表来设置或禁用代理,通过
wininet.dll的 InternetSetOptionW 函数通知系统代理设置更改。
- UI 绘制
- 主界面继承自
Wpf.Ui.Controls.FluentWindow类,原生支持 Mica 效果和 WinUI 3 风格 UI 控件; - 系统托盘图标继承自
Hardcodet.Wpf.TaskbarNotification.TaskbarIcon类,但仅用于控制图标的表现 - 实际托盘菜单为自定义窗口,通过继承
System.Windows.Window类并使用 WPF-UI控件,实现现代化且生命周期独立的菜单窗口。其目的是使托盘菜单和主界面的生命周期解耦,在后台启动时托盘菜单可以独立运行。- 通过组合使用
SingleBorderWindow的窗口设置和WindowChrome类,将窗口控件完全隐藏的同时保留阴影效果; - 通过调用
User32.dll、SHCore.dll中的函数,手动设置托盘菜单的位置,并考虑到 HiDPI 和屏幕缩放的影响。
- 通过组合使用
- 主界面继承自
- 当前,本工具不允许修改手动修改代理服务器地址或端口。
- 仅支持 IPv4,不支持 IPv6。
- 本工具虽为单文件发布,但未包含运行时,需自行安装 .NET 10 桌面运行时。
Warning
由于使用了 WPF-UI 并通过它开启了 Mica 效果,本程序已验证无法在 Windows 10 上运行。
- 自行下载安装 .NET 10 SDK。
- Clone 本仓库到本地,并 cd 到仓库根目录。
- 运行
dotnet publish -c Release -r <ARCH> --sc false以发布不包含运行时的单文件应用程序。根据自身设备的CPU架构选择以下任意一项填入<ARCH>中:win-x64win-x86win-arm64
- 发布的文件位于
bin\Release\net10.0-windows\<ARCH>\publish\目录下。
- v1.0.0 首个稳定版本。
- v1.1.0 使用
LibraryImport()和源生成器替代DllImport()。 - v1.1.1 修复系统库调用失败异常,并重构状态栏消息获取方式。
- v1.3.0
- 增加后台运行功能,关闭将会最小化到系统托盘。
- 使用 Hardcodet.NotifyIcon.Wpf 提供系统托盘及其菜单,允许用户直接通过系统托盘菜单执行操作。
- 更改窗口设置,禁止最大化并移除最大化按钮;同时不允许增加窗口到大于初始状态,缩小窗口不受影响。
- 增加应用程序清单文件,更好地控制高分辨率屏幕下的表现。
- v1.3.1 修复多个程序同时运行问题。现在将只允许一个进程实例运行。
- v1.3.2 增加
--background参数(大小写不敏感),允许程序启动时直接最小化到系统托盘。 - v1.4.0 重构系统托盘及其菜单的架构,使用自绘 UI 重写托盘菜单的外观,实现更现代化的视觉效果。
- v1.4.1 修复后台启动时托盘菜单无法正确获取代理状态的问题。
- v1.4.2 修正按钮 UI 元素的互斥关系,避免出现应用和禁用代理按钮同时可用的状态。

