2016-05-04 24 views
4

Ich arbeite an einem Projekt, das ich zip mit Passwort geschützt von Datei Inhalt in C# erstellen muss.Zip-Datei in .net mit Passwort erstellen

Bevor ich System.IO.Compression.GZipStream zum Erstellen von Gzip-Inhalten verwenden. Hat .net irgendwelche Funktionen zum Erstellen von zip oder rar passwortgeschützten Dateien?

+1

Im Allgemeinen, wenn die Funktionalität von System.IO.Compression.GZipStream ist nicht genug für Sie - es https://sevenzipsharp.codeplex.com Rahmen ist, die viel komplexer ist. Innerhalb des .net-Frameworks ist GZipStream die einzige Möglichkeit, Archive zu erstellen. – VitaliyK

+0

@VitaliyK Ich würde auch empfehlen 7Zip #, aber es gibt ein paar andere Kompressionsmechanismen im Rahmen neben 'GZipStream' (zB' DeflateStream', 'ZipPackage',' ZipFile' (seit 4.5) etc.) –

+0

@VitaliyK tut gzipstream hat Passwortfunktion? Ich habe keine Passwort-Funktionalität gefunden. –

Antwort

3

Werfen Sie einen Blick auf DotNetZip

Es hat sich ziemlich geat Dokumentation bekam und es erlaubt Ihnen auch die DLL zur Laufzeit als embeded Datei zu laden.

1

Leider gibt es keine solche Funktionalität im Framework. Es gibt eine Möglichkeit, ZIP-Dateien zu erstellen, aber ohne Passwort. Wenn Sie kennwortgeschützte ZIP-Dateien in C# erstellen möchten, empfehle ich SevenZipSharp. Es ist im Grunde ein Managed Wrapper für 7-Zip.

SevenZipBase.SetLibraryPath(Path.Combine(
     Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? Environment.CurrentDirectory, 
     "7za.dll")); 

SevenZipCompressor compressor = new SevenZipCompressor(); 

compressor.Compressing += Compressor_Compressing; 
compressor.FileCompressionStarted += Compressor_FileCompressionStarted; 
compressor.CompressionFinished += Compressor_CompressionFinished; 

string password = @"whatever"; 
string destinationFile = @"C:\Temp\whatever.zip"; 
string[] sourceFiles = Directory.GetFiles(@"C:\Temp\YourFiles\"); 

if (String.IsNullOrWhiteSpace(password)) 
{ 
    compressor.CompressFiles(destinationFile, sourceFiles); 
} 
else 
{ 
    //optional 
    compressor.EncryptHeaders = true; 
    compressor.CompressFilesEncrypted(destinationFile, password, sourceFiles); 
} 
Verwandte Themen