Windows 本地图形界面工具,统一管理散落的 API 凭据(tokens/keys)与开发环境变量(JAVA_HOME/Path 等)。 纯本地运行,无任何网络上传;任何界面/日志/导出均不显示完整凭据值(仅前缀 6 位 + 长度)。
- 运行
dist\credmgr\credmgr.exe - 首次启动:设置主密码 → 创建保险库(可选"记住本机",主密码存入 Windows 凭据管理器,DPAPI 保护)
- 解锁后进入主界面:
- 🔑 凭据页:点"重新扫描"导入机器上发现的全部凭据(加密存储)
- 🖥 环境变量页:查看/编辑用户级与系统级变量,可视化编辑 Path,切换 JDK 版本
- 💾 备份/恢复 / 📋 变更审计 / 🩺 安全体检 / 🔗 占位符
# Python 3.12 环境
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python main.py # 启动 GUI
.venv\Scripts\python main.py --scan # 只读盘点(CLI,脱敏输出)| 项 | 实现 |
|---|---|
| 存储加密 | 主密码 → Argon2id(64MB, 3iter) → AES-256-GCM 逐条加密凭据(SQLite,仅存密文+前缀+长度) |
| 记住本机 | 主密码经 DPAPI(Windows 凭据管理器)保存,可选启用 |
| 脱敏铁律 | 全项目统一 mask():任何输出只显示 前缀6位…(长度) |
| 写前备份 | 修改任何现有配置文件前自动备份(~/.credmgr/backups/) |
| 审计日志 | 记录时间/位置/动作/前后值摘要(脱敏),可导出 CSV |
| 备份加密 | 可导出口令加密的备份包(enczip1 格式) |
| 剪贴板 | 查看完整值仅临时弹窗,5 秒自动隐藏 |
- 双层级:用户级(HKCU)与系统级(HKLM)分开编辑;系统级修改需管理员,非管理员自动触发 UAC 提权;关键系统变量只读保护
- Path 可视化编辑器:逐条列表(增/删/排序/勾选启用禁用),失效路径标红
- 多版本切换(通用引擎):可配置工具清单(
app/core/tool_registry.py,支持用户覆盖~/.credmgr/tool_registry.json),三种机制:home型(Java/Maven/Go/Gradle/Node):扫描目录 → 改写*_HOME变量,Path%VAR%\bin自动跟随path型(Python):把目标版本 bin 移到 Path 最前special型(Rust/rustup、.NET SDK):调用工具自身版本管理器- 实测支持:Java 8u481/21.0.11、Python 3.14/3.12 多版本切换;Maven/Go/Node/.NET/Rust 自动检测当前版本
- 引用链:%JAVA_HOME%\bin 等 %VAR% 引用保留(REG_EXPAND_SZ),修改父变量自动影响子条目
- 生效提示:每次修改提示"新终端生效,当前窗口不受影响"(通过 WM_SETTINGCHANGE 广播)
- 仪表盘:总数/分类/状态统计
- 表格:名称、类型、来源(可多处)、长度、前缀、状态;值默认隐藏,点眼睛临时显示 5 秒
- 同步更新:一条凭据(如 GitHub token)一次更新到所有关联位置(环境变量、.claude.json、ZCode 配置、opencode 配置、插件配置等),执行前自动备份 + 预览确认
- 轮换引导:吊销重建后录入新值,一键同步到所有位置
- 占位符规范化:列出各配置中的 {env:X} / ${X} / {file:...} 语法与兼容性提示
- 搜索:跨名称/来源/前缀
检测:明文 token 泄露、重复 key、空占位符、孤立凭据(环境变量无配置引用)、GITHUB_TOKEN 双变量不一致、失效 Path 条目、失效变量指向、npm 镜像等。 体检报告全程脱敏。所有修复动作需你在界面上手动确认(先备份 → 预览 → 执行)。
| 内容 | 路径 |
|---|---|
| 加密保险库 | ~\.credmgr\vault.db |
| 主密码元数据(盐/校验码) | ~\.credmgr\settings.json |
| 审计日志 | ~\.credmgr\audit.jsonl |
| 备份包 | ~\.credmgr\backups\backup-<时间戳>\ |
主密码丢失将无法恢复凭据(加密无法绕过)。建议:备份保险库 + 加密导出备份包并存。
.venv\Scripts\pip install pyinstaller
.venv\Scripts\pyinstaller build\credmgr.spec --noconfirm --distpath dist --workpath build\work
# 产物: dist\credmgr\credmgr.exe(onedir 模式,规避 onefile+UAC 安全隐患)Python 3.12 · PySide6 (Qt) · winreg(注册表)· ctypes(UAC/WM_SETTINGCHANGE)· cryptography(Argon2id/AES-GCM)· keyring(DPAPI)· SQLite · PyInstaller
- 系统级变量修改在非管理员启动时需 UAC 提权(会弹窗)
.zcode\v2\credentials.json为 ZCode 内部 enc:v1 加密格式,工具仅展示键名与格式,不解析其值(无法也不应绕过)- 打包 exe 首次启动可能被杀软误报(未签名),建议添加信任或源码运行
- 多版本切换:未安装的工具不显示;
special型(.NET)仅检测不切换;新增语言可编辑tool_registry.py或~/.credmgr/tool_registry.json扩展