Microsoftは、 System.IO.Compression 名前空間での.NET 4.5のZipファイル処理の改善を導入しています。つまり、クラス ZipArchive および ZipFile です。ただし、パスワードで保護されたファイルにネイティブの.NET Zipファイル処理を使用する方法はまだ見ていません。これを達成する方法はありますか? (私はかなり良いサードパーティのZipファイルライブラリがあることを知っています、それは問題ではありません。)
残念ながら違います。パスワードで保護されたZipファイルに対する.Net Framework 4.5内のサポートはありません。この場合、よく知られているサードパーティライブラリのいずれかに切り替える必要があります。
指摘したように、 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に移行したようです:
ionicメソッドは素晴らしいです。私は他の3つのアプローチを試しましたが、これは間違いなく最高です。時間を無駄にしないでください。
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
暗号化されたパスワード、およびその他のZipオプションをサポートします。
4.5フレームワークで提供される methods を見ると、Zipファイルでパスワードを許可するメソッドはありません。あなたの質問で述べたように、サードパーティがあなたの最善策です。
ネイティブの.net 4.5ライブラリには、Windows 10でもWindows Explorerでサポートされていないように見えるのと同様に、パスワードで保護されたZipファイルのサポートはないようです。一部の人々は、サードパーティのDotNetLibを使用してZipの破損の問題があると報告しているため、そのパスをたどるか、 SharpZipLib を試してください。