使用.NET 4.5解压缩受密码保护的ZIP文件

Microsoft在System.IO.Compression命名空间中引入了.NET 4.5中ZIP文件处理的改进。 即ZipArchive和ZipFile类。 但是,我还没有看到过对密码保护文件使用本机.NET ZIP文件处理的方法。 有没有办法实现这个目标? (我知道有很好的第三方zip文件库,这不是问题。)

不幸的是不是 .Net Framework 4.5中不支持受密码保护的zip文件。 在这种情况下,您必须切换到众所周知的第三方库之一。

正如所指出的, DotNetZip是你的朋友。 解压缩您的zip文件非常简单

using ( ZipFile archive = new ZipFile( @"c:\path\to\your\password\protected\archive.zip",) ) { archive.Password = "your-pass-word-here" ; archive.Encryption = EncryptionAlgorithm.PkzipWeak ; // the default: you might need to select the proper value here archive.StatusMessageTextWriter = Console.Out; archive.ExtractAll( @"c:\path\to\unzip\directory\", ExtractExistingFileAction.Throw ) ; } 

根据我的经验,DotNetZip的运行速度与Info-Zip的开源解压缩实用程序一样快,并且使用的内存大致相同。


编辑注: DotNetZip曾经住在Codeplex。 Codeplex已被关闭。 Codeplex仍然可以使用旧存档。 看起来代码已迁移到Github:


离子方法很棒。 我尝试了其他三种方法,这是迄今为止最好的方法。 不要浪费时间,只需使用它。

https://dotnetzip.codeplex.com/wikipage?title=PS-Examples

支持密码加密和其他zip选项。

在查看4.5框架提供的方法时,没有一种方法允许使用zip文件的密码。 如你的问题所述,第三方将是你最好的选择。

在本机.net 4.5库中似乎没有对受密码保护的zip文件的任何支持,类似于在Windows资源管理器中似乎没有支持,即使使用Windows 10! 有些人报告称他们使用第三方DotNetLib时存在拉链损坏问题,因此请确保您进行广泛测试,确定是沿着这条路走下去还是尝试使用SharpZipLib 。