我有点困惑,我运行的是 64 位 Windows 7 Professional N,刚刚从他们的主页下载了预编译的 Twitter Bootstrap 库。
在提取时,系统提示我备份加密密钥,文件在 Windows 资源管理器中如下所示:
我没有在这台机器上使用加密,为什么会发生这种情况?
答案1
我今天早上下载 Bootstrap 时遇到了这个问题,我以为我可能感染了一些恶意软件……
根据这个github 问题这是因为该 zip 文件是在 Mac 上创建的。
这篇博文描述该问题:
这确实有点搞笑。ZIP 规范要求创建 zip 存档的程序/操作系统包含一个标签,用于向尝试解压存档的程序告知自身信息。此信息称为“版本制作者”,如下所示:
0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems) 1 - Amiga 2 - OpenVMS 3 - UNIX 4 - VM/CMS 5 - Atari ST 6 - OS/2 H.P.F.S. 7 - Macintosh 8 - Z-System 9 - CP/M 10 - Windows NTFS 11 - MVS (OS/390 - Z/OS) 12 - VSE 13 - Acorn Risc 14 - VFAT 15 - alternate MVS 16 - BeOS 17 - Tandem 18 - OS/400 19 - OS/X (Darwin) 20 thru 255 - unused
现在,有趣的是,Mac OS 似乎正在用值 3 (UNIX) 标记它创建的 zip 存档。好的,我想到目前为止没有问题。
当 Windows 对如何解释文件/文件夹属性感到困惑时,就会出现问题。在 FAT/NTFS 中,这些值是根据文件属性常量的定义存储的。您会看到 FILE_ATTRIBUTE_ENCRYPTED 的值为 0x4000。
有趣的是 Mac OS 如何将其文件属性存储在 zip 存档中。Mac OS 是基于 UNIX 的操作系统,使用 UNIX 文件/文件夹属性系统(和权限,但这是另一个话题了……)。好吧,碰巧的是,在 POSIX 中,描述目录/文件夹的标志 (S_IFDIR) 恰好也具有值 0x4000。所以事实证明,zip 解压缩代码并不知道可能还有其他操作系统可以创建 zip 存档……
你能改变这个行为吗?
不,但是您可以轻松地从提取的文件/文件夹中清除加密标志。