web-dev-qa-db-fra.com

Définir le mot de passe sur le fichier Zip à l'aide de DotNetZip

J'utilise DotNetZip pour compresser mes fichiers, mais je dois définir un mot de passe dans Zip.

J'ai essayé:

public void Zip(string path, string outputPath)
    {
        using (ZipFile Zip = new ZipFile())
        {
            Zip.AddDirectory(path);
            Zip.Password = "password";
            Zip.Save(outputPath);
        }
    }

Mais la sortie Zip n'a pas de mot de passe.

Le paramètre patha un sous-dossier par exemple: path = c:\path\ et à l'intérieur du chemin j'ai subfolder

Qu'est-ce qui ne va pas?

18
Jean Carlos

Seules les entrées ajoutées après la propriété Password a été définie verront le mot de passe appliqué. Pour protéger le répertoire que vous ajoutez, définissez simplement le mot de passe avant d'appeler AddDirectory.

using (ZipFile Zip = new ZipFile())
{
    Zip.Password = "password";
    Zip.AddDirectory(path);
    Zip.Save(outputPath);
}

Notez que cela est dû au fait que les mots de passe sur les fichiers Zip sont alloués aux entrées dans le fichier Zip et non sur le fichier Zip lui-même. Cela vous permet d'avoir une partie de votre fichier Zip protégé et d'autres pas:

using (ZipFile Zip = new ZipFile())
{
    //this won't be password protected
    Zip.AddDirectory(unprotectedPath);
    Zip.Password = "password";
    //...but this will be password protected
    Zip.AddDirectory(path);
    Zip.Save(outputPath);
}
31
petelids