Microsoft представляет усовершенствования для обработки файлов ZIP в .NET 4.5 в пространстве имен System.IO.Compression. А именно классы ZipArchive и ZipFile. Тем не менее, я еще не видел способ использовать встроенную обработку файлов ZIP для файлов с защитой паролем. Есть ли способ достичь этого? (Я знаю, что есть довольно хорошие библиотеки сторонних zip файлов, это не вопрос.)
Декомпрессия ZIP файлов, защищенных паролем, с помощью .NET 4.5
Ответ 1
К сожалению, нет. Внутри .Net Framework 4.5 нет поддержки для защищенных паролем zip файлов. В этом случае вам нужно переключиться на одну из известных сторонних библиотек.
Ответ 2
Как указано, 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 работает примерно так же быстро, как с открытым исходным кодом unzip в Info-Zip и использует примерно такой же объем памяти.
Ответ 3
Ионный метод является удивительным. Я пробовал три других подхода, и это, безусловно, самое лучшее. Не тратьте время, просто используйте его.
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
Поддержка зашифрованных паролей и других параметров zip.
Ответ 4
При взгляде на методы, предоставленные рамкой 4.5, не существует метода, который позволяет использовать пароли с zip файлами. Как уже упоминалось в вашем вопросе, третья сторона будет вашим лучшим выбором.
Ответ 5
Кажется, что нет никакой поддержки для защищенных паролем zip файлов в собственной библиотеке .net 4.5, подобно тому, как в Windows Explorer не поддерживается поддержка даже в Windows 10! Некоторые люди сообщили, что у них есть проблемы с коррупцией в zip, используя сторонний DotNetLib, поэтому убедитесь, что вы активно тестируете, если вы идете по этому пути, или попробуйте SharpZipLib.