You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi TZipMaster组件在Windows11下生成Zip文件未加密问题咨询

TZipMaster 1.9.2在Windows 11下生成Zip文件不加密的问题排查

我有一个基于Delphi XE的旧项目,通过TZipMaster组件创建带密码保护的Zip文件,此前运行正常。迁移到Windows 11并安装最新版TZipMaster(1.9.2)后,生成的Zip文件不再加密。调试中已确认Password和AddOptions参数设置正确,相关代码如下:

ZipMaster1.ZipFileName:=strFName+FormatDateTime('yyyy-MM-dd_hh-nn-ss',Now())+'.zip';
ZipMaster1.AddOptions:= ZipMaster1.AddOptions + [AddDirNames];
if cfg.Password <> '' then begin
  ZipMaster1.AddOptions:= ZipMaster1.AddOptions + [AddEncrypt];
  ZipMaster1.Password:= cfg.Password;
end;

可能的原因及解决方法

  • 加密算法兼容性限制:TZipMaster 1.9.2默认使用的Zip 2.0传统加密算法,可能在Windows 11的安全策略下被限制,导致加密失效。
    解决:明确指定加密模式,若组件支持AES加密,可切换为更兼容的AES算法:

    if cfg.Password <> '' then begin
      ZipMaster1.AddOptions:= ZipMaster1.AddOptions + [AddEncrypt, AddAES];
      ZipMaster1.EncryptLevel := elAES256;
      ZipMaster1.Password:= cfg.Password;
    end;
    

    若需保留传统加密,强制指定加密级别:

    ZipMaster1.EncryptLevel := elTraditional;
    
  • 参数设置顺序问题:新版本组件对参数设置顺序的敏感度提升,建议调整设置逻辑,先初始化选项再配置密码和加密:

    ZipMaster1.ZipFileName:=strFName+FormatDateTime('yyyy-MM-dd_hh-nn-ss',Now())+'.zip';
    ZipMaster1.AddOptions := [AddDirNames]; // 重置选项集合,避免残留旧配置
    if cfg.Password <> '' then begin
      ZipMaster1.Password:= cfg.Password; // 先设置密码
      ZipMaster1.AddOptions:= ZipMaster1.AddOptions + [AddEncrypt]; // 再开启加密
    end;
    
  • Windows 11权限限制:生成Zip文件的目标目录权限不足,导致组件无法写入加密元数据。可尝试将生成路径切换到用户个人目录(如C:\Users\[用户名]\Documents\),或右键以管理员权限运行程序测试。

  • 版本回归bug:TZipMaster 1.9.2可能存在加密逻辑的回归问题,可尝试:

    • 查看组件更新日志,确认是否有加密相关的修复说明;
    • 临时回退到之前能正常工作的旧版本组件,对比差异验证;
    • 调用组件提供的TestEncryption方法(若存在),提前验证加密配置是否生效。

内容的提问来源于stack exchange,提问作者fullerm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:18:11