web-dev-qa-db-fra.com

Décompression de fichiers Zip protégés par mot de passe avec .NET 4.5

Microsoft introduit des améliorations pour la gestion des fichiers Zip dans .NET 4.5 dans l'espace de noms System.IO.Compression . À savoir les classes ZipArchive et ZipFile . Cependant, je n'ai pas encore vu de moyen d'utiliser la gestion native des fichiers Zip .NET pour les fichiers protégés par mot de passe. Existe-t-il un moyen d'y parvenir? (Je suis conscient qu'il existe de très bonnes bibliothèques de fichiers Zip tiers, ce n'est pas la question.)

30
So Many Goblins

Malheureusement non. Le .Net Framework 4.5 ne prend pas en charge les fichiers Zip protégés par mot de passe. Dans ce cas, vous devez basculer vers l'une des bibliothèques tierces bien connues.

23
Oliver

Comme indiqué, DotNetZip est votre ami. Déballer votre fichier Zip est aussi simple que

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 ) ;
}

D'après mon expérience, DotNetZip fonctionne à peu près aussi vite que l'utilitaire Info-Zip's open source nzip et utilise à peu près la même quantité de mémoire.


Modifié pour noter: DotNetZip habitait à Codeplex. Codeplex a été fermé. L'ancienne archive est toujours disponible sur Codeplex . Il semble que le code ait migré vers Github:


20
Nicholas Carey

La méthode ionic est géniale. J'ai essayé trois autres approches, et c'est de loin la meilleure. Ne perdez pas de temps, utilisez-la.

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

Prend en charge le mot de passe crypté et d'autres options Zip.

5
Jonesome

En regardant les méthodes fournies par le framework 4.5, il n'y a pas de méthode qui autorise les mots de passe avec des fichiers Zip. Comme mentionné dans votre question, la tierce partie sera votre meilleur choix.

4
Micah Armantrout

Il ne semble pas y avoir de support pour les fichiers Zip protégés par mot de passe dans la bibliothèque native .net 4.5, similaire à la façon dont il ne semble pas y avoir de support dans l'Explorateur Windows, même avec Windows 10! Certaines personnes ont signalé avoir des problèmes de corruption de Zip en utilisant le DotNetLib tiers, alors assurez-vous de tester de manière approfondie si vous suivez ce chemin ou essayez SharpZipLib à la place.

4
user1253917