Serendipity 812f39b159 refactor: src-tauri 重命名为 gui
Tauri CLI 自动检测 workspace 成员,构建不受影响。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 23:19:14 +08:00
2026-05-28 23:19:14 +08:00
2026-05-28 23:19:14 +08:00
2026-03-16 18:48:19 +08:00
2026-05-28 23:19:14 +08:00

PathEditor

Windows 系统环境变量 (PATH) 编辑器

version tauri react rust typescript license tests CI


简介

PathEditor 是 Windows PATH 环境变量的可视化管理工具。支持系统变量和用户变量的增删改查、拖拽排序、一键清理无效路径、导入导出以及完整的撤销/重做。

v5.0 使用 Tauri 2.x + React 19 + TypeScript + Rust 完全重写,替代了原有的 C + IUP GUI。

架构

graph TB
    subgraph 前端["React 前端"]
        UI[UI 组件层<br/>AppShell / PathTable / Dialogs]
        Store[状态管理<br/>Zustand Store]
        Core[纯逻辑层<br/>undo-redo / path-manager / validation]
        UI --> Store
        UI --> Core
        Store --> Core
    end

    subgraph IPC["Tauri IPC 桥接"]
        invoke[invoke / plugin-dialog]
    end

    subgraph 后端["Rust 后端"]
        Registry[注册表读写<br/>HKLM / HKCU]
        System[系统操作<br/>权限检测 / 路径验证 / 环境变量展开]
        Files[文件操作<br/>备份 / 配置 / 导入读取]
        Scanner[分析引擎<br/>冲突检测 / 工具清单]
    end

    subgraph Windows["Windows 系统"]
        Reg[(注册表<br/>SYSTEM / USER PATH)]
        FS[(文件系统<br/>目录验证 / exe 扫描)]
    end

    UI --> invoke
    invoke --> Registry
    invoke --> System
    invoke --> Files
    invoke --> Scanner
    Registry --> Reg
    System --> FS
    Scanner --> FS
    Files --> FS

组件树

graph TD
    App["App.tsx<br/>ErrorBoundary"]
    Shell["AppShell<br/>布局编排 + 弹窗管理"]
    TitleBar["TitleBar<br/>拖拽区域"]
    ToolBar["ToolBar<br/>搜索 / 操作 / 分析 / 配置"]
    PathTable["PathTable<br/>路径列表 + 验证 + 复选框"]
    MergePreview["MergePreview<br/>系统+用户合并视图"]
    StatusBar["StatusBar<br/>状态 / 权限 / 重试"]
    Dialogs["弹窗层<br/>PathEdit / Import / Help / Analyze / Profile"]

    App --> Shell
    Shell --> TitleBar
    Shell --> ToolBar
    Shell --> PathTable
    Shell --> MergePreview
    Shell --> StatusBar
    Shell --> Dialogs

操作流程

sequenceDiagram
    actor U as 用户
    participant UI as React UI
    participant Z as Zustand Store
    participant IPC as Tauri IPC
    participant R as Rust 后端
    participant Win as Windows

    U->>UI: 点击「保存」
    UI->>Z: savePaths()
    Z->>IPC: invoke('backup_registry')
    IPC->>R: backup_registry()
    R->>Win: 读取注册表 → 写入备份文件
    Z->>IPC: Promise.allSettled([save_system, save_user])
    IPC->>R: save_system_paths() / save_user_paths()
    R->>Win: RegSetValueEx()
    Z->>IPC: invoke('broadcast_env_change')
    IPC->>R: SendMessageTimeout(WM_SETTINGCHANGE)
    R->>Win: 通知所有进程
    Z->>UI: isModified → false, statusMessage → '保存成功'

功能

路径管理

  • 查看和编辑 系统 PATHHKLM)和 用户 PATHHKCU
  • 新建、编辑、删除、上移、下移路径条目
  • 多选批量删除
  • 实时搜索过滤
  • 合并预览(系统 + 用户路径并列显示)
  • 文件夹拖拽添加

路径验证

  • 红色标记:路径在文件系统中不存在
  • 橙色标记:路径在列表中重复出现
  • 环境变量路径(含 %VAR%)悬浮展开预览

撤销/重做

  • 支持 9 种操作类型,最多 50 步历史
  • 新增、删除、编辑、移动、清理、清空、导入均可撤销

导入/导出

  • JSON:结构化导出,含版本和时间戳
  • CSVUTF-8 BOM 编码,兼容 Excel
  • TXT:纯文本,每行一个路径

安全

  • 保存前自动备份注册表到 %APPDATA%/PathEditor/backups/
  • PATH 长度检查(Windows 单变量上限 32767 字符)
  • 非管理员自动进入只读模式
  • 保存中途失败精确提示哪个注册表 hive 出错

界面

  • 深色模式 / 浅色模式
  • 中文 / English 界面切换
  • 全局键盘快捷键
  • 修改状态指示(黄点)+ 未保存退出确认

安装

Releases 下载最新版 PathEditor_4.2.0_x64-setup.exe 安装。

或从源码构建:

# 安装依赖
npm install

# 构建安装包
npx tauri build

要求Windows 10+(自带 WebView2),管理员权限才能编辑系统 PATH。

开发

# 开发模式(热更新)
npx tauri dev

# 仅前端
npm run dev

# 前端测试
npm test

# Rust 后端检查
cd gui && cargo check

# Rust 后端测试
cd gui && cargo test

技术栈

技术
前端框架 React 19 + TypeScript (strict)
UI 样式 Tailwind CSS 4
状态管理 Zustand
国际化 i18next
桌面框架 Tauri 2.x
后端 Rust (winreg + windows-rs FFI)
前端测试 Vitest (72 个测试)
Rust 测试 cargo test (10 个测试)
构建 Vite
打包 NSIS

项目结构

src/                          # React 前端
├── core/                     # 纯逻辑 — 零框架依赖、零平台依赖
├── store/                    # Zustand 状态管理
├── components/
│   ├── layout/               # AppShell、TitleBar、StatusBar、ErrorBoundary
│   ├── path-list/            # PathTable、MergePreview
│   ├── toolbar/              # ToolBar、ActionButtons、UndoRedoButtons、SearchInput
│   ├── dialogs/              # PathEditDialog、HelpDialog、ImportDialog
│   └── ui/                   # Modal、buttons(共享组件)
├── hooks/                    # useAppActions、useKeyboard
├── i18n/                     # zh-CN / en
└── config/                   # default.json

gui/                    # Rust 后端
└── src/commands/
    ├── registry.rs           # 注册表读写
    ├── system.rs             # 权限检测、路径验证、环境变量展开
    └── backup.rs             # 注册表备份

tests/unit/                   # 前端单元测试

快捷键

快捷键 功能
Ctrl+N 新建路径
Ctrl+S 保存
Ctrl+Z 撤销
Ctrl+Y 重做
Ctrl+F 搜索
Delete 删除选中
F1 帮助

贡献

欢迎提交 Issue 和 Pull Request。在开始大改动前,建议先开 Issue 讨论。

本地开发环境

  • Node.js 22+
  • Rust 1.95+ (stable-x86_64-pc-windows-gnu)
  • MinGW-w64 (GCC 15.x 需配置 -lmcfgthread 链接标志)

代码规范

  • TypeScript strict: true,零编译错误
  • 所有 Rust unsafe 块必须有 // SAFETY: 注释
  • 前端核心逻辑在 src/core/,纯函数,零依赖,可独立测试

许可证

MIT License

作者

刘航宇 — 河南理工大学人工智能协会

S
Description
Path Editor 是一个专为 Windows 用户设计的系统环境变量(PATH)管理工具。它基于原生 C 语言和 IUP 图形库开发,旨在替代 Windows 自带的简陋编辑界面。 相比系统自带的编辑器,Path Editor 提供了更加直观的双视图(系统/用户变量)界面、智能的路径有效性检测、自动备份机制以及便捷的拖拽操作,让环境变量的管理变得安全、高效且轻松。无论您是开发者还是系统管理员,它都是您配置开发环境的得力助手。
https://github.com/LHY0125/PathEditor Readme MIT 15 MiB
Languages
C 70.8%
C++ 26.7%
Batchfile 1.1%
CMake 0.8%
Lua 0.6%