【问题标题】:Why is my zip folder not locked with password, but the files inside are locked?为什么我的 zip 文件夹没有用密码锁定,但里面的文件被锁定了?
【发布时间】:2020-08-18 20:20:14
【问题描述】:

我已经挣扎了几个小时,试图在 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
}

但是,当我运行这个程序时,它确实创建了一个名为 FinalResult.zip 的 zip 文件夹,但该 zip 文件夹不受密码保护。该 zip 文件夹中的所有文件均受密码保护。如果是这种情况,用户每次尝试打开其中的文件时都必须输入密码,这有点不方便。我只希望用户在尝试打开 zip 文件夹时只需输入一次密码。 谁能告诉我为什么这段代码不能达到我想要的效果?

【问题讨论】:

  • Zip 文件(没有 zip“文件夹”之类的东西)不支持加密其文件列表,仅支持文件内容本身。 Windows 行为反映了这一事实,您可以正常打开存档,并且在提取其中一个文件时只需要密码。您需要使用比 zip 更严格的文件格式(如 rar 或 7zip)来实现这一点,同时使用不同的库。您所拥有的是最好的 zip 文件。

标签: dotnetzip


【解决方案1】:

密码实际上是正确的:

在编写 zip 存档时,此密码应用于条目,而不是 zip 存档本身。 它适用于随后使用 AddFile、AddDirectory 之一添加到 ZipFile 的任何 ZipEntry, AddEntry 或 AddItem 方法等。在读取 zip 存档时,此属性适用于随后使用 ZipFile 类上的 Extract 方法之一从 ZipFile 中提取的任何条目。

请参阅 DotNetZip 中 Password 的文档中的备注部分

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

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-02-28
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多