Почему моя zip-папка не заблокирована паролем, но файлы внутри заблокированы?

Aug 19 2020

Я уже несколько часов борюсь, пытаясь установить пароль на zip-папку. Однако, сколько бы раз я ни пробовал использовать другой код, пароль применяется к каждому файлу внутри zip-папки, а это не то, что мне нужно. Я хочу применить пароль только к самой папке, и не нужно устанавливать пароль для отдельных файлов внутри.

Вот мой код: (Для вашей информации я использую DotNetZip)

//Assume that there is a folder with multiple files in it at C:\\ExampleFolder
using (Ionic.Zip.ZipFile z = Ionic.Zip.ZipFile())
{
    z.Password = "MyPassword";            //Setting the password
    z.AddDirectory(@"C:\\ExampleFolder"); //I thought the directory added here should be pw-protected
    z.Save(@"C:\\FinalResult.zip");       //Create the pw-protected zip folder
}

Однако, когда я запускаю эту программу, она создает zip-папку с именем FinalResult.zip, но эта zip-папка не защищена паролем. Все файлы в этой zip-папке защищены паролем. В этом случае пользователю придется вводить пароль каждый раз, когда он пытается открыть файл внутри, что довольно неудобно. Я просто хочу, чтобы пользователь вводил пароль только один раз при попытке открыть zip-папку. Может ли кто-нибудь сказать мне, почему этот код не делает того, чего я хочу достичь?

Ответы

2 vvvv4d Aug 19 2020 at 03:36

Пароль действительно работает правильно:

При записи zip-архива этот пароль применяется к записям, а не к самому zip-архиву. Оно применяется к любому ZipEntry, впоследствии добавленному в ZipFile, с использованием одного из методов AddFile, AddDirectory, AddEntry или AddItem и т. Д. При чтении zip-архива это свойство применяется к любой записи, впоследствии извлеченной из ZipFile с помощью одного из методов Extract. в классе ZipFile.

См. Раздел примечаний в документации по PasswordDotNetZip.

https://documentation.help/DotNetZip/4444d7a5-3324-8af9-3ed3-5bf6551d3cd1.htm