mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-06-30 18:45:55 +08:00
a8f1bfeaab
将GNU Makefile构建系统迁移到CMake 3.15+,新增CLAUDE.md项目指南, 重写README.md补充项目结构、工作原理和详细构建说明。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
Path Editor 是一个 Windows 系统环境变量 PATH 编辑器,使用 C 语言和 IUP 图形库开发。通过读写注册表 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path 来管理系统 PATH。
构建与运行
# 编译(需要 MinGW-w64 在 PATH 中)
mingw32-make
# 清理构建产物
mingw32-make clean
# 运行(必须以管理员身份)
bin/PathEditor.exe
编译器为 MinGW-w64 GCC,使用 windres 编译资源文件(图标)。IUP 3.31 库已包含在 libs/ 目录下,无需额外安装。
打包
使用 Inno Setup 6 生成安装包。先编译生成 exe,再用 Inno Setup 编译 dist/installer.iss。
架构
src/
main.c 入口,构建 UI 布局(IupDialog + IupFlatList + 按钮)
callbacks.c 所有按钮回调 + 自定义输入对话框
registry.c 注册表读写:load_path() / save_path()
utils.c 编码转换 + 管理员权限检测 + 斑马纹刷新
include/
globals.h 全局 Ihandle* 指针和注册表路径常量
callbacks.h 回调函数声明
registry.h 注册表操作声明
utils.h 工具函数声明
数据流: load_path()(注册表 → 列表) → 用户操作(按钮回调) → save_path()(列表 → 注册表 → WM_SETTINGCHANGE 广播)
编码约定: IUP 使用 UTF-8,Windows 注册表 API 使用 UTF-16 (wide char)。utils.c 提供 wide_to_utf8() 和 utf8_to_wide() 完成转换。
全局控件: 所有 IUP 控件句柄(dlg, list_path, lbl_status, 各按钮)在 main.c 定义并通过 globals.h 声明为 extern,回调函数和工具函数直接访问它们。
关键约束
- 必须以管理员身份运行才能保存更改(
check_admin()通过尝试以KEY_WRITE打开注册表来检测) - IUP 的
UTF8MODE必须在IupOpen()之前通过putenv("IUP_UTF8MODE=YES")设置 IupFlatList的数据操作(APPEND等属性)必须在控件 Map 之后(IupShowXY之后)才能生效- PATH 使用
REG_EXPAND_SZ类型以支持%SystemRoot%等变量展开