Microsoft представляет улучшения для работы с файлами ZIP в .NET 4.5 в пространстве имен System.IO.Compression. А именно классы 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 проходит так же быстро, как Инфо-молнии'С с открытым кодом распаковать утилиты и использует примерно такое же количество памяти.
Отредактировал Примечание: DotNetZip привыкли жить на веб-сайте CodePlex. Сайте CodePlex был закрыт. Старый архив еще доступен на сайте CodePlex. Похоже, что код был перенесен в GitHub:
Ионный метод - это потрясающе. Я пробовал три других метода, и этот, безусловно, лучший. Не тратьте время, просто используйте его.
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
Поддерживает шифрование паролем и другие опции zip.
При просмотре методов, предоставляемых фреймворком 4.5, нет метода, позволяющего использовать пароли с zip-файлами. Как указано в вашем вопросе, лучше всего использовать сторонние методы.
Там не представляется какой-либо поддержки для защищенных паролем файлов zip в родного .объем 4.5 библиотека, подобно тому, как там не кажется, быть поддержка в проводнике, даже с Windows 10! Некоторые люди сообщили, что они имеют проблемы коррупции zip с помощью 3-й партии DotNetLib, поэтому убедитесь, что вы тщательно проверить, если вы пойти по этому пути или попробовать SharpZipLib вместо этого.
Для тех таргетинга .Чистая стандарта 2.0, SharpZipLib делает большую работу, правильно обрабатывать добыча пароль в памяти защищенных zip-файлов в Byte[].
https://github.com/icsharpcode/SharpZipLib
Попробовал ионные по такому же сценарию, но позволяют извлечь файлы с ZipInputStream, который генерируется поврежден извлечены байтовые массивы.