Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 

Repository files navigation

7zip-Smart

Modified 7-Zip's source code to add smart extraction, automatic password list attempts, auto-opening extracted folders, auto-deleting original archives after extraction, and font settings.
修改7-Zip源码,增强它的功能,实现了智能解压、自动尝试密码表、解压后自动进入、自动删除,字体设置等.


7-Zip Smart 增强版 基于v26.02版本修改

本项目为 7-Zip 的修改增强版,旨在引入类似 Bandizip 的智能解压自动尝试解压密码7zFM 文件管理器功能增强、更现代的美化图标以及命令行自定义参数。

截图

右键菜单
image

密码输入框
image

选项/解压 设置页面
image

选项 设置字体 大小(自动列)
image

Directory Opus 按钮中调用
image


🛠 新增自定义参数总览 (Custom Parameters)

所有自定义参数均统一采用 -c(Custom)前缀,确保不与 7-Zip 原生参数冲突。

参数 英文含义 功能描述
-csmt Smart 智能解压模式。若包内仅一项则直接解压;若多项则创建同名外层文件夹。
-csmd Smart Dir 智能解压时,若包内仅一个文件(非文件夹),仍以压缩包名创建外层文件夹。
-cdirn Dir (n) 若目标文件夹已存在,自动创建带 (n) 后缀的新文件夹。
-cgo Go 解压完成后,自动打开/进入目标文件夹。
-cdel Delete 解压成功后,彻底删除原压缩包。
-crb Recycle Bin 解压成功后,将压缩包移至回收站而非永久删除。
-cpwd<path> Password 自动尝试密码,并支持指定外部密码 .txt 文件路径。

适用程序7zG.exe 7z.exe 7za.exe


🚀 核心修改特性

1. 智能解压机制 (Smart Extract)

实现类似 Bandizip 的无脑解压体验:

  • -csmt 逻辑

  • 当压缩包内只有一项(无论是一个文件还是一个文件夹)时,不额外创建外层文件夹,直接解压到当前目录。

  • 当压缩包内多于一项时,自动以压缩包名称创建外层文件夹,防止文件散乱。

  • -csmd 逻辑

  • 当压缩包内只有一个文件(非文件夹)时,依然以压缩包文件名创建外层文件夹,其余与 -csmt 一致。

  • 右键菜单集成

  • 文件右键弹出菜单新增 “智能解压到此” 项,并将其移至解压系列菜单的首位

  • 该右键菜单行为受 7zFM 中 选项 -> 解压 -> <智能解压时总是创建文件夹> 勾选状态的控制。

2. 7zFM 工具/选项「解压」标签页

7zFM.exe -> 工具 -> 选项 中新增 「解压」 专属标签卡,提供图形化配置(对应影响右键菜单及默认行为):

  • [ ] 排除重复的根文件夹 (原功能移至此处)
  • [ ] 智能解压时总是创建文件夹 (映射参数:-csmd)
  • [ ] 若文件夹已存在,则创建带(n)后缀的新文件夹 (映射参数:-cdirn)
  • [ ] 解压后打开文件夹 (映射参数:-cgo)
  • [ ] 解压后删除压缩包 (映射参数:-cdel)
  • [ ] 删除到回收站 (映射参数:-crb)
  • [ ] 自动尝试解压密码 (映射参数:-cpwd)
  • 文本输入框与 [浏览] 按钮,用于指定自定义密码 txt 文件路径 (映射参数:-cpwd<filepath.txt>)

3. 自动尝试解压密码

为提升加密包的解压效率,引入多级密码自动轮询匹配机制:

  • 命令行开关 -cpwd<filepath.txt>

  • 该参数既是外部路径指定,也是功能开关。无此参数则不触发自动尝试。

  • 路径支持双引号包裹,如 -cpwd"D:\My Passwords.txt"。若未指定路径或路径无效,仅作为开启密码尝试的开关。

  • 密码文件读取优先级顺序

  1. 首先读取 7-Zip 根目录下的 FilePasswords.txt
  2. 其次读取 -cpwd 参数指定的自定义文件
  3. 最后读取 7-Zip 根目录下的 passwords.txt
  • 交互对话框升级(密码输入对话框):

  • 新增按钮 [从文件尝试密码]:点击后立即按上述顺序轮询尝试字典文件中的密码。 (Alt+F)

  • 新增按钮 [保存当前密码]:将当前输入框内的密码保存至根目录下的 passwords.txt(每行一个),不关闭对话框,不触发解压。

  • 新增勾选项 [当密码正确时自动保存]:勾选后,若解压成功,会自动以 "{完整文件路径}"={密码} 的格式写入根目录下的 FilePasswords.txt。为了安全,默认不勾选。

  • 7zFM 联动:开启后,7zFM 打开非头部加密包,点击解压、测试 或双击包内文件时均会自动尝试密码。

4. 7zFM 文件菜单与右键菜单增强

7zFM.exe「文件」菜单 以及 文件列表区右键菜单 中同步增加了以下三项实用功能:

  • 复制名称 (Alt + C):将所有当前选中项的纯文件名复制到剪贴板。
  • 复制完整路径 (Ctrl + Shift + C):将选中项在压缩包内部的相对完整路径复制到剪贴板(不包含压缩包自身的磁盘路径)。

💡 举例
压缩包路径为 C:\TEMP\newdir.zip
选中包内文件:C:\TEMP\newdir.zip\multi\test1.txt
执行后剪贴板内容为:\multi\test1.txt (便于用 Everything 进行精确搜索)。

  • 打开压缩包所在文件夹 (Ctrl + S):在文件管理器中直接定位并选中当前在 7zFM 中打开的压缩包 (Show in folder)。
  • 注:此项位于「属性」菜单下方,仅在进入压缩包内部时可用,未进入压缩包时显示为灰色禁用状态。

5. UI 与视觉美化

  • 图标替换:替换来自 Auto7zip 的现代化美化图标。
  • 字体可调:在 选项 -> 设置 界面中新增 [设置字体] 按钮。弹框可更改字体名称、字号大小及字形,配置实时保存于注册表。
  • 动态单位列:文件列表区新增 「大小(自动)」 列。文件大小将以更友好的动态单位(KB / MB / GB)显示,可在列头右键菜单中开启。
  • 排序箭头指示:为排序列头增加了三角箭头标识,明确反映当前是正序还是逆序。

🚫 已放弃/未能实现的特性 (Dropped Features)

  • [未能实现] 将排序列的背景色改为浅灰色 rgb(240,240,240)
  • [放弃实现] 基于 7z.ini 的便携化配置文件逻辑。由于涉及修改 ZipRegistry.cpp 且逻辑过于复杂(需隔离命令行与 GUI 行为),该便携化功能现已放弃,配置仍统一走注册表。

💻 命令行使用示例 (CLI Examples)

示例 1:智能解压、联动删除并打开目标文件夹

读取指定的密码表以自动尝试,进行智能解压,解压成功后进入文件夹,并将原压缩包删除到回收站:

7zG.exe x -csmt -cgo -crb -cpwd"D:\密码表.txt" "C:\foobar.7z"

示例 2:强制创建外层目录的智能解压

使用控制台版本,对包内即使只有一个文件的情况也强制创建同名外层文件夹,并在解压后自动进入:

7za.exe x -csmd -cgo -cpwd "C:\SingleFile.7z"

📦 编译 (compile)

核心两步(PowerShell):

  • ① 初始化 VS x64 编译环境
  • ② 进入目标目录执行 nmake

一次性初始化编译环境
打开 PowerShell,先运行(每个新终端只需一次):
& 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64 -HostArch amd64 -SkipAutomaticLocation
编译 7zFM 为例:
cd "D:\7zip-src\CPP\7zip\UI\FileManager"
清理旧的编译物
Remove-Item x64 -Recurse -Force -ErrorAction SilentlyContinue
正式编译
nmake PLATFORM=x64

📦 主要编译产物 (Build Outputs)

修改代码后 需编译以下文件:

  • 7zFM.exe (文件管理器GUI)
  • 7zG.exe (带界面的命令行工具)
  • 7z.exe / 7za.exe (纯命令行工具)
  • 7-zip.dll (右键菜单会调用)
  • 7z.dll (动态链接库)

About

Modified 7-Zip's source code to add smart extraction, automatic password list attempts, auto-opening extracted folders, auto-deleting original archives after extraction, and font settings. 7zip智能解压、自动尝试密码表、解压后自动进入、自动删除,字体调整等

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors