web-dev-qa-db-ja.com

パスワードで保護されたZipファイルを.NET 4.5で解凍する

Microsoftは、 System.IO.Compression 名前空間での.NET 4.5のZipファイル処理の改善を導入しています。つまり、クラス ZipArchive および ZipFile です。ただし、パスワードで保護されたファイルにネイティブの.NET Zipファイル処理を使用する方法はまだ見ていません。これを達成する方法はありますか? (私はかなり良いサードパーティのZipファイルライブラリがあることを知っています、それは問題ではありません。)

30
So Many Goblins

残念ながら違います。パスワードで保護されたZipファイルに対する.Net Framework 4.5内のサポートはありません。この場合、よく知られているサードパーティライブラリのいずれかに切り替える必要があります。

23
Oliver

指摘したように、 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's オープンソース nzip ユーティリティとほぼ同じ速度で実行され、ほぼ同じ量のメモリを使用します。


注:DotNetZipはCodeplexで使用されていました。 Codeplexはシャットダウンされました。古いアーカイブはまだ Codeplexで入手可能 です。コードがGithubに移行したようです:


20
Nicholas Carey

ionicメソッドは素晴らしいです。私は他の3つのアプローチを試しましたが、これは間違いなく最高です。時間を無駄にしないでください。

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

暗号化されたパスワード、およびその他のZipオプションをサポートします。

5
Jonesome

4.5フレームワークで提供される methods を見ると、Zipファイルでパスワードを許可するメソッドはありません。あなたの質問で述べたように、サードパーティがあなたの最善策です。

4

ネイティブの.net 4.5ライブラリには、Windows 10でもWindows Explorerでサポートされていないように見えるのと同様に、パスワードで保護されたZipファイルのサポートはないようです。一部の人々は、サードパーティのDotNetLibを使用してZipの破損の問題があると報告しているため、そのパスをたどるか、 SharpZipLib を試してください。

4
user1253917