c# - Descomprimir archivos ZIP protegidos por contraseña con.NET 4.5
.net-4.5 (5)
Microsoft introduce mejoras para el manejo de archivos ZIP en .NET 4.5 en el espacio de nombres System.IO.Compression . Es decir, las clases ZipFile y ZipFile . Sin embargo, todavía no he visto una forma de usar el manejo de archivos ZIP nativo .NET para archivos protegidos por contraseña. ¿Hay una manera de lograr esto? (Soy consciente de que hay muy buenas bibliotecas de archivos zip de terceros, esa no es la cuestión).
Al observar los ZipArchive proporcionados por el marco 4.5, no existe un método que permita contraseñas con archivos zip. Como se mencionó en su pregunta, la tercera parte será su mejor apuesta.
Como se señaló, DotNetZip es tu amigo. Desembalar su archivo zip es tan fácil como
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 ) ;
}
En mi experiencia, DotNetZip se ejecuta casi tan rápido como Info-Zip''s utilidad de Info-Zip''s código abierto de Info-Zip''s y utiliza aproximadamente la misma cantidad de memoria.
Editado para tener en cuenta: DotNetZip solía vivir en Codeplex. Codeplex ha sido cerrado. El archivo antiguo todavía está DotNetZip . Parece que el código ha migrado a Github:
- https://github.com/DinoChiesa/DotNetZip . Parece ser el repo original del autor.
- https://github.com/haf/DotNetZip.Semverd . Esta parece ser la versión actualmente mantenida. También está empaquetado y disponible a través de Nuget en https://www.nuget.org/packages/DotNetZip/
El método iónico es impresionante. Probé otros tres enfoques, y es el mejor con diferencia. No pierdas el tiempo, solo úsalo.
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
Soporta contraseña encriptada, y otras opciones zip.
Lamentablemente no. No hay soporte dentro de .Net Framework 4.5 para archivos zip protegidos con contraseña. En este caso, debe cambiar a una de las bibliotecas de terceros conocidas.
No parece haber ningún soporte para archivos zip protegidos con contraseña en la biblioteca nativa .net 4.5, de manera similar a como no parece haber soporte en el explorador de Windows, ¡incluso con Windows 10! Algunas personas han informado que tienen problemas de corrupción de zip al usar DotNetLib de terceros, así que asegúrese de probar exhaustivamente si sigue ese camino o intente SharpZipLib en SharpZipLib lugar.