[Bug] Windows 管理员模式下 Sub-Store 界面空白

Author: AdcbdaCreated Sep 11, 2026Updated Sep 12, 2026
Labelsbugmore info needed

Verify steps

  • 我已在标题简短描述问题
  • 我已搜索 Issue Tracker,未发现相同问题
  • 我已检查常见问题,未找到答案
  • 这是 GUI/Electron 渲染问题,不是 mihomo 内核问题
  • 我关闭系统中的所有杀毒/代理软件
  • 已在当前最新发布版 v2.0.2 portable 上复现

操作系统

Windows

系统版本

Windows 11 Pro 25H2,Build 26200.9445,x64

发生问题 clash-party 版本

  • Clash Party v2.0.2 portable x64
  • Electron 43.2.0
  • Sub-Store Front-End 2.29.10
  • Sub-Store Backend 2.36.40

描述

Clash Party 以普通用户权限运行时,Sub-Store 页面正常显示。启用 TUN 后应用通过 UAC 重启为管理员,或直接“以管理员身份运行”后,Clash Party 主界面仍正常,但 Sub-Store 内容区域完全空白,只显示黑色背景。

已经排除 Sub-Store 前端服务器、后端服务器、端口及数据目录问题:

  • 前端 127.0.0.1:14122 和后端 127.0.0.1:38324 均正常监听。
  • index.html、入口 JS、静态资源以及 /api/subs/api/collections 都返回 HTTP 200。
  • Sub-Store 后端日志显示正常启动并能处理订阅请求。
  • portable 模式下,提权前后使用的是同一个 data 目录。
  • 降权重新运行后,无需更改 Sub-Store 配置即可恢复显示。

因此黑色区域不是服务器未启动,而是 iframe 内前端没有完成渲染。

重现方式

  1. 在 Windows 上启动 Clash Party portable,保持普通用户权限。
  2. 打开 Sub-Store 页面,确认界面正常显示。
  3. 启用 TUN,让 Clash Party 通过 UAC 重启为管理员;直接右键“以管理员身份运行”也可。
  4. 再次打开 Sub-Store 页面。
  5. 实际结果:标题栏和 Clash Party 外壳正常,Sub-Store 内容区域全黑。
  6. 退出并以普通用户权限重新启动,Sub-Store 恢复正常。

预期行为

管理员模式下 Sub-Store 与普通模式一样正常渲染;或者 TUN 仅提升核心/helper 权限,不提升整个 Electron UI。

初步定位

Sub-Store 当前通过跨源 iframe 加载:

  • src/renderer/src/pages/substore.tsx 中使用 http://127.0.0.1:<frontendPort> iframe。
  • 主窗口在 src/main/window.ts 中配置了 webPreferences.sandbox: false
  • 但最小测试显示,file:// 主界面和 http://127.0.0.1 iframe 会成为两个 renderer:主 renderer 使用 --no-sandbox,跨站 iframe 的 OOPIF renderer 仍使用 --enable-sandbox
  • 正常权限时 iframe renderer 能创建并完成渲染;出现问题的管理员实例中没有对应的第二个 renderer 进程。
  • src/main/lifecycle.ts 的管理员分支只追加了 disable-gpu-sandbox,不会关闭 iframe renderer sandbox。

怀疑是 Windows 高完整性 Electron 主进程与跨站 iframe 沙箱 renderer 的 token / integrity-level 兼容问题。管理员模式下主界面 renderer 可以运行,但 Sub-Store OOPIF renderer 无法正常创建或很快退出,最终留下空白 iframe surface。

--no-sandbox 可能可以用于验证,但不建议作为正式修复。更安全的方向可能是仅提升 mihomo/TUN helper,而保持 Electron UI 为普通权限;或避免让 Sub-Store 落入管理员进程中的 sandboxed OOPIF,并明确评估相关安全边界。

补充:在 Electron 43.5.1 的普通权限最小测试中,跨站 iframe 仍会独立创建带 --enable-sandbox 的 renderer;尚未在管理员权限下完成 43.5.1 的对照测试。

Source: mihomo-party-org/clash-party