为什么Windows 7无法从使用DotNetZip创建的受密码保护的zip文件中提取文件?

时间:2015-03-24 15:44:48

标签: c# .net dotnetzip

我正在使用DotNetZip创建受密码保护的zip文件。当我尝试提取文件时,我遇到了“未指定的错误”。那是为什么?

using (var zipFile = new ZipFile())
{
    zipFile.Encryption = EncryptionAlgorithm.WinZipAes256;
    zipFile.Password = "pangolin";

    foreach(var file in someFileCollection)
    {
        zipFile.AddEntry(file.Name, file.Stream);
    }

    zipFile.Save(aPathOnDisk);
}

1 个答案:

答案 0 :(得分:9)

这是因为Windows,更具体地说是Windows资源管理器无法处理AES级加密,并且要求将加密级别设置为PkzipWeak,该文件记录为" 传统或经典pkzip加密。 / EM>"

zipFile.Encryption = EncryptionAlgorithm.PkzipWeak;

根据EncryptionAlgorithm枚举的文档:

  

[...]如果您使用WinZipAes256生成zip存档,您将能够在Windows XP和Vista上的Windows资源管理器中打开它,但您将无法提取条目;尝试这将导致"未指定的错误"。

注意:流行的第三方存档实用程序(如WinZip或7-Zip)可以很好地处理AES加密。它的Windows资源管理器是套牌中的弱牌。