Установка пароля в Zip файле с помощью DotNetZip

Я использую DotNetZip для zip файлов, но мне нужно установить пароль в zip.

Я пробовал:

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

Но на выходе zip нет пароля.

Параметр path имеет подпапку, например: path = c:\path\ и внутри пути у меня есть subfolder

Что не так?

Ответ 1

Только записи, добавленные после установки свойства Password, будут применяться к паролю. Чтобы защитить каталог, который вы добавляете, просто установите пароль перед вызовом AddDirectory.

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

Обратите внимание, что это связано с тем, что пароли в Zip файлах размещаются в записях внутри Zip файла, а не в самих Zip файлах. Это позволяет вам защитить некоторые ваши zip файлы, а некоторые нет:

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