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.)
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.
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:
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.
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.
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.