论坛首页 安全编程开发区 阅读主题

[原创]7-Zip 单文件纯净版 (v26.00) - 静态编译 / 零DLL依赖 / UI美化

428 浏览 0 回复
#1 楼主 2026-06-01 21:08:58
说明7-Zip 原版右键菜单基于 COM Shell Extension,实现为 7-zip.dll 注入 explorer.exe。该机制在便携场景下会引入典型问题:模块常驻导致文件句柄占用,影响删除、覆盖及 U 盘卸载。基于此,对 7-Zip 26.00 源码做了一次裁剪与重组,目标是去掉 Shell 扩展依赖,转为纯进程外调用模型。目前在 Win7 / Win10 环境下做过基本测试。????️ 实现要点1. 架构重组(静态化)合并 FM 与 7z Core,统一静态链接移除 7-zip.dll / 7zG.exe 等拆分结构最终产物为单一可执行文件(无运行时依赖)本质上是把原本「GUI + DLL + Loader」结构,收敛为单进程内调用。2. 右键菜单去 COM 化原实现路径:Explorer → COM → 7-zip.dll → In-proc 执行调整后:Explorer → Shell(注册表)→ 外部 EXE → 参数分发关键点:移除 IContextMenu / IShellExtInit 相关实现不再发生 in-proc 注入(explorer.exe 无 7-Zip 模块加载)使用 %1 / %* 做参数透传副作用:失去级联菜单(Cascade Menu)能力但避免了句柄锁定与 Explorer 稳定性问题3. 菜单触发方式基于静态注册表项,通过 %1 / %* 传参在软件的“选项 -> 设置”中重构了 UI,新增了专属的【集成到系统右键菜单】原生复选框。勾选即写入注册表,取消即干净卸载,绝不留一丁点注册表残余Explorer 侧不做类型判断,统一分发到外部进程实际控制逻辑在应用层处理。4. 资源与配置调整去除外部 Lang 依赖(编译期写入 RC)移除文件关联相关 UI(避免覆盖系统默认行为)精简设置项,仅保留必要入口对部分图标及位图资源做了简单替换(非功能性修改,美化资源来自github)5. 交互行为调整拖拽到工具栏区域:按“打开”处理拖拽到客户区(文件列表区域):按“压缩”处理属于简单的消息分发区分(基于窗口区域判断)。 适用方向便携工具链(U 盘 / PE)需要避免 Explorer 注入的环境对句柄占用 / 文件热替换敏感的场景倾向无依赖、可直接删除的静态软件形态
整体可以理解为:将 7-Zip 从「Shell 扩展型工具」改为「外部调用型工具」不涉及功能增强,主要是执行模型的调整。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!


最后于 2026-3-22 16:22
被道破红尘编辑

,原因:

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290458.htm

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号