同UCanCode一起释放 Visual C++, C# 的巨大能量!
UCCZip 文档

UCCZip 项目文档

UCanCode 专业压缩管理器 — 基于 Qt 5.15.2 的 Windows 桌面归档工具,集成多格式压缩/解压、Shell 扩展、自解压包、归档库与 ZIP 密码恢复能力。

Qt 5.15.2 qmake + MinGW 64-bit C++17 版本 0.7.0.0 / V2.0 Build 2026.06.12

1. 项目基础信息

属性说明
项目名称UCCZip(UCanCode Zip / UCCZip 2026)
开发商UCanCode Software
官方网站https://www.ucancode.net
技术支持Support@ucancode.net
产品定位Windows 平台专业压缩管理器,对标 WinRAR / 7-Zip / PeaZip 的核心体验,强调内置引擎、Shell 集成与 ZIP 密码恢复
版本标识资源文件 0.7.0.0;关于对话框显示 V2.0;运行时 applicationVersion = 1.0.0
许可证Copyright (C) 1999–2026 UCanCode Software(项目源码含第三方组件,各自遵循对应开源许可)
解决的问题:在 Windows 上提供一站式归档管理——无需安装 WinRAR 即可解压 RAR,无需 7z.exe 即可处理 7z/TAR/GZIP/XZ;通过资源管理器右键与 Win11 稀疏包实现系统级集成;对遗忘密码的 ZipCrypto/AES ZIP 提供多策略恢复;支持创建自解压 EXE 与归档样本库管理。

1.1 核心功能一览

  • 多格式归档:ZIP、RAR、7z、TAR、GZIP、Unix .Z 等格式的浏览、压缩、解压、测试
  • 加密支持:ZIP 传统 ZipCrypto 与 WinZip AES-256 加密/解密
  • 双视图文件管理:文件系统树 + 压缩包内虚拟目录浏览,支持拖放、查找、部分解压
  • 智能解压:根据压缩包顶层结构自动选择解压到当前目录或同名子文件夹
  • Shell 扩展UCCZipShell.dll 提供经典右键菜单与 Win11 IExplorerCommand 主菜单
  • 自解压包 (SFX):将文件夹打包为独立 .exe,内置静态链接的 UCCZipSfxStub.exe
  • 归档库 (Archive Depot):基于 SQLite 的压缩包样本入库、检索与管理
  • ZIP 密码破解:字典、掩码、字符集暴力、已知明文 (KPA)、CRC32 短明文枚举等
  • 系统集成:文件关联、开机自启、系统托盘、单实例、Mark-of-the-Web (MOTW) 标记
  • 国际化:中文(默认)/ 英文界面切换

1.2 归档格式支持矩阵

读取(解压 / 列表 / 测试)

格式扩展名示例引擎备注
ZIP.zip .zipx .jar .war .apk .epub .cbz …minizip-ng支持 AES 与传统加密
RAR.rar .r00–.r99 .partN.rar .rev内置 UnRAR 库无需安装 WinRAR
7z.7zKArchive (K7Zip)可选 7z.exe 兜底非常规格式
TAR 系列.tar .tar.gz .tgz .tar.bz2 .tar.xz .txz …KArchive (KTar)含 BZIP2、XZ 过滤器
GZIP.gz(非 tar.gz)GzipEngine / KArchive单文件流
Unix compress.Z .zncompress (UnixZEngine)单文件 LZW
SFX.exe(UCCZip 格式)SfxPayload 检测识别自带 stub 的自解压包

创建(压缩)

格式内置创建依赖
ZIPminizip-ng
7zKArchive K7Zip
TAR / .tar.gz / .tar.xz 等KArchive KTar
Unix .Zncompress(单文件)
RAR需要外部 Rar.exe

2. 环境与安装

2.0 依赖环境要求

组件版本 / 要求说明
操作系统Windows 10 19041+ / Windows 11Win11 稀疏包用于一级右键菜单
Qt5.15.2模块:Core, Gui, Widgets, Concurrent, Network, Sql
编译器MinGW 8.1 64-bit (mingw810_64)与 Qt 5.15.2 mingw81_64 套件匹配
构建工具qmake, mingw32-make推荐 Qt Creator 或命令行
C++ 标准C++17CONFIG += c++17
PowerShell5.0+图标生成、部署、稀疏包注册脚本
运行时Qt5 DLL + MinGW 运行时由 windeployqt 自动收集
注意:项目不依赖仓库内 Check/ 目录(仅为参考源码)。所有运行时依赖已 vendoring 在 thirdparty/ 中。可用 tools/verify_no_check_deps.ps1 扫描误引用。

推荐 Qt 安装路径(本项目开发环境)

C:\Qt515\5.15.2\mingw81_64\     # Qt 库与 qmake
C:\Qt515\Tools\mingw810_64\     # MinGW 工具链

可选外部工具

  • 7z.exe — 非常规 .7z 归档兜底(正常使用不需要)
  • UnRAR.exe — RAR 兜底(内置 UnRAR 为默认)
  • Rar.exe创建 RAR 归档时必需
  • bkcrack.exe — KPA 攻击可选外部工具(亦内置 bkcrack 静态库)

2.1 本地编译构建

方式 A:Qt Creator(推荐)

  1. 用 Qt Creator 打开 UCCZip.pro
  2. 选择套件:Desktop Qt 5.15.2 MinGW 64-bit
  3. 构建配置选 Release 或 Debug
  4. 点击构建 — qmake 会自动串联编译:
    • 应用图标 (tools/generate_app_icon.ps1)
    • Shell 扩展 DLL (shell/UCCZipShell/)
    • SFX 存根 (sfx/UCCZipSfxStub/,始终 Release 静态链接)
    • 主程序 UCCZip.exe

方式 B:命令行

# 设置 PATH
$env:PATH = "C:\Qt515\Tools\mingw810_64\bin;C:\Qt515\5.15.2\mingw81_64\bin;" + $env:PATH

# 创建并进入构建目录
cd d:\Temp2\UCCZip
mkdir build\Desktop_Qt_5_15_2_MinGW_64_bit-release -Force
cd build\Desktop_Qt_5_15_2_MinGW_64_bit-release

# 生成 Makefile 并编译
qmake ..\..\UCCZip.pro -spec win32-g++ "CONFIG+=release"
mingw32-make -j4

构建成功后,Release 产物位于:

build\Desktop_Qt_5_15_2_MinGW_64_bit-release\release\
  ├── UCCZip.exe
  ├── UCCZipShell.dll
  ├── UCCZipSfxStub.exe
  ├── libwinpthread-1.dll
  ├── images\
  ├── Assets\
  ├── AppxManifest.xml
  ├── tools\
  └── plugins\sqldrivers\qsqlite.dll
主工程 UCCZip.pro 在链接前自动执行 windeployqt --compiler-runtime --no-translations,将 Qt 运行时 DLL 复制到输出目录,实现「qmake + make 即可运行」的自包含构建。

2.2 部署与安装

一键部署到 C:\UCCRelease

powershell -ExecutionPolicy Bypass -File "d:\Temp2\UCCZip\tools\deploy_uccrelease.ps1" `
  -BuildReleaseDir "d:\Temp2\UCCZip\build\Desktop_Qt_5_15_2_MinGW_64_bit-release\release" `
  -DestDir "C:\UCCRelease"

部署脚本自动完成:

  1. 复制核心二进制与资源到目标目录
  2. 运行 windeployqt 收集 Qt / MinGW 运行时
  3. 复制 SQLite 驱动 (qsqlite.dll)
  4. 复制 Win11 稀疏包清单与图标资源
  5. 复制 password_list.txt 密码字典(若存在)
  6. 执行 UCCZip.exe --shell-register 注册右键菜单与稀疏包

手动安装步骤

  1. 将完整发布目录(含上述所有文件)复制到目标位置,例如 C:\UCCRelease
  2. 以该目录为工作目录,运行:UCCZip.exe --shell-register
  3. (可选)在设置中启用文件关联、开机自启、系统托盘
  4. 首次启动会自动尝试注册 Win11 稀疏包;也可手动执行 tools\register_win11_sparse_package.ps1

卸载 Shell 集成

UCCZip.exe --shell-unregister

3. 使用指南

3.1 主界面操作

主窗口 (MainWindow) 提供双模式视图:

  • 文件系统视图:浏览本地目录,双击压缩包进入归档视图
  • 归档视图:在压缩包内导航子目录,支持地址栏、后退/前进、上级目录

工具栏 / 菜单核心操作

操作功能
打开压缩包选择归档文件,自动检测格式;加密包弹出密码对话框
打开文件夹浏览本地文件系统
添加文件向已打开的 ZIP 追加文件(AddToExisting 模式)
解压打开解压对话框,可选目标路径、覆盖策略、选定条目
快速解压按设置中的默认路径规则一键解压
智能快速解压启用 SmartExtract 策略自动决定解压目录结构
测试压缩包校验归档完整性
压缩打开压缩对话框:格式、级别、密码、AES、包含根目录等
加密压缩包为已有 ZIP 设置密码
创建自解压包打开 SFX 对话框,生成 .exe 自解压程序
归档库将选中压缩包导入样本库
ZIP 密码破解打开 ZipCracker 对话框(工具菜单)
查找在当前视图内搜索文件名
拖放拖入文件/文件夹可打开压缩包或触发压缩

设置项(选项对话框)

  • 默认解压位置:压缩包旁 / 同名子文件夹 / 自定义目录
  • 压缩默认:格式、压缩级别、AES 加密、覆盖策略
  • 智能解压开关、解压后打开文件夹、MOTW 标记模式
  • 多线程解压线程数(LZMA2 / .xz,0 = 自动)
  • Shell 右键菜单集成、文件关联
  • 单实例模式、系统托盘、关闭到托盘、开机自启
  • 界面语言:中文 / English

3.2 Shell 右键菜单

通过 UCCZipShell.dll 与注册表/IExplorerCommand 集成到 Windows 资源管理器。支持 Win10 经典菜单与 Win11 一级上下文菜单(稀疏包 AppxManifest.xml)。

可用 Shell 命令(动词)

动词说明
extract打开解压对话框
extract-here解压到当前目录
extract-here-smart智能解压到当前目录
extract-default按默认设置解压
compress打开压缩对话框
compress-quick快速压缩为 .zip(支持多选合并)
compress-7z快速压缩为 .7z
create-sfx创建自解压包
test测试压缩包完整性
archive-depot导入归档库
archive-depot-manager打开归档库管理器

多选压缩时,资源管理器会为每个选中项启动独立进程;UCCZip 通过 --shell-coalesce 机制合并为一次压缩操作。

3.3 命令行参数

维护参数

UCCZip.exe --shell-register      # 注册 Shell 扩展与稀疏包
UCCZip.exe --shell-unregister    # 卸载 Shell 扩展

Shell 调用格式

UCCZip.exe --shell <verb> ["path1" "path2" ...]
UCCZip.exe --shell compress-quick --shell-coalesce "D:\file1.txt"
UCCZip.exe --shell archive-depot-manager

开发与测试参数

参数用途
--sfx-smoke <folder> <output.exe>SFX 构建冒烟测试
--compress-smoke <folder> <out.zip> [pwd]压缩冒烟测试
--zip-pwd-test <zip> <correct> <wrong>密码校验测试
--zip-crack-analyze <zip>分析 ZIP 加密特征
--zip-crack-open-smoke <zip> [phase]ZipCracker 对话框启动测试

直接打开文件

UCCZip.exe "D:\archive.zip"          # 打开指定压缩包
UCCZip.exe "D:\folder"               # 浏览文件夹

3.4 ZIP 密码破解

通过 工具 → ZIP 密码破解 打开 ZipCrackerDialog。实现参考 ZipCracker 项目,支持 ZipCrypto 与 WinZip AES。

攻击方式(按顺序执行)

  1. 伪加密检测与修复(成功则直接解压,无需密码)
  2. 短明文 CRC32 枚举(1–6 字节,可选)
  3. 常见弱口令 / 密码字典(单文件或目录内全部 .txt)/ 数字字典 / 字符集暴力
  4. 掩码攻击(?d 数字、?l 小写、?u 大写、?s 符号等)
  5. 已知明文攻击 KPA(仅 ZipCrypto;内置 png/zip/exe 模板)

性能参数

参数默认值
线程数min(128, CPU×4),UI 可覆盖
批大小max(1024, 线程×128),上限 8192
环境变量ZIPCRACKER_THREADSZIPCRACKER_BATCH_SIZEZIPCRACKER_PREFETCH_BATCHES
合法使用:仅对您有权测试的归档进行密码恢复。禁止用于未授权访问他人数据。

3.5 归档库 (Archive Depot)

归档库用于管理压缩包样本集合,数据存储在 SQLite 数据库中(ArchiveDepotDatabase)。

  • 导入:通过右键「导入归档库」或主界面工具菜单,将压缩包复制到库目录并记录元数据
  • 管理:打开归档库管理器,按库路径浏览、搜索、编辑备注、删除记录
  • 字段:文件名、存储路径、源路径、格式、大小、备注、创建/更新时间

3.6 自解压包 (SFX)

通过 SfxBuilder 将文件夹打包为独立可执行文件:

  • 使用 UCCZipSfxStub.exe 作为存根(静态链接 zlib + minizip,无 Qt 依赖)
  • 支持设置解压目标(如 %EXEDIR%)、压缩级别、AES 加密、自定义图标
  • 可配置解压后运行程序、创建开始菜单快捷方式、解压后打开文件夹
  • 构建时自动将 payload 附加到 stub 末尾

4. 技术架构

4.1 代码目录结构

UCCZip/ ├── UCCZip.pro # 主工程文件 ├── main.cpp # 程序入口、Shell/测试模式分发 ├── mainwindow.cpp/.h # 主窗口 UI 与业务编排 ├── chmiaboutdlg.* # 关于对话框 ├── ucczip.qrc # Qt 资源(图标等) ├── UCCZip_manifest.rc # Windows 版本资源 │ ├── core/ # 核心业务逻辑 │ ├── archive_types.h # 归档类型、任务、条目定义 │ ├── archivedetector.* # 格式检测(扩展名 + 文件头签名) │ ├── archivesignatures.* # 魔数签名表 │ ├── archiverouter.* # 多引擎路由与能力查询 │ ├── archivemanager.* # 异步任务调度(压缩/解压/测试/SFX) │ ├── zipengine.* # ZIP 引擎 (minizip-ng) │ ├── rarengine.* # RAR 引擎 (UnRAR) │ ├── karchiveengine.* # 7z/TAR/GZIP 引擎 (KArchive) │ ├── unixzengine.* # Unix .Z 引擎 (ncompress) │ ├── gzipengine.* # GZIP 单文件引擎 │ ├── archivelock.* # 归档文件锁 │ ├── appsettings.* # 应用设置 (QSettings) │ ├── applocalization.* # 中英文切换 │ ├── applog.* # 日志 │ ├── autostart.* # 开机自启 │ ├── singleinstance.* # 单实例 IPC │ ├── shellcommandline.* # Shell/CLI 参数解析 │ ├── shellcontextmenu.* # 右键菜单注册 │ ├── shellcompresscoalesce.* # 多选压缩合并 │ ├── fileassociations.* # 文件类型关联 │ ├── sparsepackageregistration.* # Win11 稀疏包 │ ├── sfxbuilder.* / sfxpayload.* / sfxuninstallscript.* # SFX 构建 │ ├── archivedepotdatabase.* / archivedepotservice.* # 归档库 │ └── zipcracker*.* # ZIP 密码破解全套模块 │ ├── ui/ # 对话框与自定义控件 │ ├── compressdialog.* # 压缩选项 │ ├── extractdialog.* # 解压选项 │ ├── passworddialog.* # 密码输入 │ ├── progressdialog.* # 进度显示 │ ├── settingsdialog.* # 设置 │ ├── sfxdialog.* # 自解压包创建 │ ├── zipcrackerdialog.* # 密码破解 │ ├── archivedepotdialog.* / archivedepotmanager.* # 归档库 │ └── ... │ ├── models/ # Qt Model/View 数据模型 │ ├── archivefilemodel.* # 压缩包内文件列表 │ ├── directorylistmodel.*# 文件系统列表 │ └── filefilterproxymodel.* # 搜索过滤代理 │ ├── utils/ # 工具函数 │ ├── smartextract.* # 智能解压路径决策 │ ├── shellutils.* # Shell 交互 │ ├── motw_win.* # Mark-of-the-Web │ ├── qtsqlsetup.* # SQLite 插件路径 │ └── ... │ ├── shell/UCCZipShell/ # Shell 扩展 DLL (COM, 无 Qt) │ ├── contextmenu.* # 经典上下文菜单 │ ├── explorercommand*.* # Win11 IExplorerCommand │ ├── commandstore_*.* # 命令存储注册 │ └── ucc_subcommands.* # 子命令定义 │ ├── shell/UCCZipSparsePackage/ # Win11 稀疏包清单 │ └── AppxManifest.xml │ ├── sfx/UCCZipSfxStub/ # 自解压存根 (静态编译, 无 Qt) │ ├── thirdparty/ # 第三方源码(全部内置) │ ├── minizip/ # minizip-ng (ZIP) │ ├── karchive/ # KArchive (7z/TAR/GZIP) │ ├── unrar/ # UnRAR 库 │ ├── unixcompress/ # ncompress (.Z) │ ├── zlib-1.3.1/ # zlib (SFX stub) │ ├── xz-5.6.3/ # liblzma │ ├── bkcrack-src/ # bkcrack (KPA) │ └── ... │ ├── tools/ # 构建/部署/测试脚本 │ ├── deploy_uccrelease.ps1 │ ├── register_win11_sparse_package.ps1 │ └── generate_app_icon.ps1 │ ├── images/ # 应用图标与 Shell 图标 ├── docs/ # 项目文档 └── Check/ # 参考项目(不参与构建)

4.2 核心模块说明

4.2.1 归档引擎层

ArchiveRouter 根据 ArchiveFormat 将操作分发到对应引擎,并通过 ArchiveCapabilities 查询各格式的 List/Extract/Test/Compress 能力。

职责
ArchiveDetector扩展名 + 文件头签名双重检测格式
ArchiveRouter统一 list/runTask 入口,路由到具体引擎
ArchiveManager持有全部引擎实例,通过 QFutureWatcher 异步执行任务,发射 progress/finished 信号
ZipEngineZIP 压缩/解压/列表/密码测试,基于 minizip-ng
RarEngineRAR 解压/列表,基于 UnRAR 源码
KArchiveEngine7z、TAR、GZIP、BZIP2、XZ 处理
UnixZEngineUnix compress (.Z) 单文件
GzipEngine独立 .gz 单文件流处理

4.2.2 表示层 (MainWindow)

主窗口是整个应用的编排中心:

  • 管理双视图切换(文件系统 / 归档内浏览)
  • 处理用户操作 → 构建 ArchiveTask / SfxTask → 提交 ArchiveManager
  • 处理 Shell 模式(m_shellMode):无界面或最小化执行右键命令后退出
  • 维护导航历史、最近文件、剪贴板操作、拖放、临时解压缓存

4.2.3 Shell 集成层

组件技术职责
UCCZipShell.dllCOM InprocServer / IExplorerCommand资源管理器右键菜单 UI 与命令派发
ShellContextMenu注册表 + Sparse Package菜单注册/卸载、Win11 一级菜单
ShellCommandLine命令行解析--shell <verb>ShellCommand 枚举
ShellCompressCoalesce跨进程 IPC合并 Explorer 多选压缩请求
FileAssociationsIApplicationAssociationRegistration注册 .zip/.rar/.7z 等文件关联

4.2.4 ZIP 密码破解子系统

ZipCrackerDialog ZipCrackerWorkflow ZipCrackerWorker ZipCrackerVerify
  • ZipCrackerVerify — 归档分析、快速密码筛选(ZipCrypto 12 字节头校验)
  • ZipCrackerWorker — 多线程字典/暴力枚举,专用 QThreadPool
  • ZipCrackerMask — 掩码密码生成
  • ZipCrackerKpa / ZipKpaEngine — 已知明文攻击(集成 bkcrack 库)
  • ZipCryptoFast — ZipCrypto 快速解密校验
  • ZipCrackerSession — QSettings 会话持久化

4.2.5 归档库子系统

  • ArchiveDepotDatabase — SQLite 本地数据库,管理 ArchiveDepotRecord
  • ArchiveDepotService — 导入逻辑:复制文件到库目录 + 写入记录
  • ArchiveDepotManager — UI 管理界面

4.2.6 SFX 子系统

  • SfxBuilder — 编排 stub + payload 拼接
  • SfxPayload — payload 格式与 SFX 检测
  • UCCZipSfxStub — 独立 C++ 项目,运行时自解压(静态链接,无 Qt DLL)

4.3 数据流与启动流程

应用启动流程

  1. main() 检查测试/冒烟参数 → 否则创建 QApplication
  2. 初始化日志、清理 7 天前的临时目录 (%TEMP%/UCCZip)
  3. 加载 AppSettings,安装翻译器,配置 SQLite 插件路径
  4. 解析 --shell-register/unregister → 注册/卸载后退出
  5. ShellContextMenu::syncFromSettings() 同步右键菜单状态
  6. SingleInstance 检测:若已有实例则转发命令后退出
  7. 解析 --shell <verb>:Shell 模式或普通模式启动 MainWindow

压缩/解压任务流

  1. 用户操作 / Shell 命令 → MainWindow 构建 ArchiveTask
  2. ArchiveManager::compress/extract/testQThreadPool 中异步执行
  3. ArchiveRouter::runTask() 按格式路由到具体 Engine
  4. Engine 通过回调报告进度 → ArchiveManager::progress 信号 → ProgressDialog
  5. 完成后发射 finished(success, message)

关键数据结构

// archive_types.h
enum class ArchiveFormat { Unknown, Zip, Rar, SevenZip, Tar, GZip, UnixZ, Sfx };
enum class ArchiveOperation { None, Compress, Extract, Test, List };

struct ArchiveEntry {
    QString name, path;
    qint64 compressedSize, uncompressedSize;
    QDateTime modified;
    bool isDirectory, encrypted, usesAes;
    int compressionMethod;
    quint32 crc32;
};

struct ArchiveTask {
    ArchiveOperation operation;
    ArchiveFormat format;
    QString archivePath, destinationPath;
    QStringList sourcePaths;
    QString password;
    int compressionLevel;
    bool useAes, overwrite, includeRoot, extractSelectedOnly;
    QList<ArchiveEntry> prefetchedEntries;
    SmartExtractPolicy smartExtractPolicy;
    CompressArchiveMode compressMode;
};

4.4 第三方依赖

组件路径用途许可
minizip-ngthirdparty/minizip/ZIP 读写zlib-style
zlib 1.3.1thirdparty/zlib-1.3.1/SFX stub 压缩zlib license
KArchivethirdparty/karchive/7z/TAR/GZIP/BZIP2/XZLGPL-2.0+
liblzmathirdparty/xz-5.6.3/XZ/LZMA2 解压Public domain / LGPL
ncompressthirdparty/unixcompress/Unix .ZPublic domain
UnRARthirdparty/unrar/RAR 解压UnRAR license
bkcrackthirdparty/bkcrack-src/ZIP 已知明文攻击开源