Repository navigation
ipmg v1.4.1
ipmg v1.4.1
v1.4.0 的补丁版本:修复若干"文档承诺了但功能没接线"的问题、单实例与提权的竞态缺陷,并把 README 重写为规范项目文档。
缺陷修复
- 提权与单实例竞态:自动提权会拉起新进程接管,而父进程在退出前仍持有单实例互斥体,新进程可能抢在这个窗口内启动、误判"已在运行"而直接退出(表现为点击后程序没启动)。现在提权前先让出单实例,提权失败再重新取回
- 单实例判定更稳健:改为"创建后立即尝试取得所有权"(
WaitForSingleObject)。此前只要系统里存在同名互斥体对象(哪怕没有任何进程持有),程序就会永久认为"已有实例在运行"而拒绝启动 - 重复启动唤出既有窗口真正接线:v1.4.0 只发送了通知事件却没有代码等待它,第二个实例提示"已请求既有实例显示窗口"却无人响应。现在既有实例会显示并前置窗口(常驻实例恢复被隐藏的控制台)并唤醒重绘
- 操作闸门接入前台界面:配置、恢复、撤销、历史恢复现在都持闸门,与后台热键应用互斥。此前闸门只有热键路径使用,手动配置期间按预设热键会出现两边同时写同一块网卡
- 手动流程备份失败默认中止:此前只提示"备份失败(继续执行)"就照常写网卡;现在默认中止(没有回滚点就不动网卡),确认知情后才继续;网卡没有 IPv4(未连接/APIPA,撤销无法还原)时给出提示
- 空备份提示判断取错栈元素:备份栈 index 0 才是刚写入的那条,此前取最旧一条,会双向误报/漏报
- 设置里的自定义更新检测地址(镜像站)真正生效:此前该设置项无人读取,手动检查与启动检测都只用内置源
- 删除
utils/backup.py中四个无调用者且绕过操作闸门的直接写网卡函数,恢复入口统一为core.operations
新增
- 命令行
-h/--help帮助、-V/--version版本输出;未知选项报错并返回退出码 2(此前被静默忽略——例如--help会被当成没写而直接启动界面) --autostart-min有实际语义:等价于--resident,但不打印常驻启动信息- 热键注册失败现在会写入日志
文档
- README 按成熟项目规范重写:徽章、功能分组表、界面预览、环境要求、安装、使用指南、命令行参数、配置文件、项目结构、架构、开发、FAQ、已知限制、技术栈、贡献
- 完整版本历史拆分到新的 CHANGELOG.md(补齐 v1.0–v1.2 记录)
- 修正文档中与实现不符的描述(界面预览的提示文本、日志不做轮转、设备/设置编辑不写操作日志、配置文件不会被自动搬移等)
使用
ipmg.exe:主程序(双击运行,自动 UAC 提权)ipmg-config-editor.exe:配置可视化编辑器(GUI,免管理员)- 帮助与版本:
ipmg --help、ipmg --version;环境自检:ipmg --selfcheck
升级提示
- 从 v1.4.0 升级:配置格式未变,直接替换 exe 即可
- 已开启开机自启的用户:计划任务记录的是 exe 路径,原地替换 exe 后无需重建任务
校验
ipmg.exe C90A0CB6D34A39D01DC1E6F24B92CC434434105CE782385EBCA06B05D5FC8D29
ipmg-config-editor.exe B1A300F220CA6468F96D22F73D63CBB0385B6089BCA8EB7624BC3216628783A9