【问题标题】:Unzip with password (with native Windows zip)使用密码解压缩(使用本机 Windows zip)
【发布时间】:2017-05-04 16:23:29
【问题描述】:

我在这个网站上看到了一篇关于使用 PowerShell 脚本使用批处理文件解压缩文件的精彩帖子:

How can you zip or unzip from the script using ONLY Windows' built-in capabilities?

但我无法找到任何关于如何使用带有 密码保护 zip 文件的 PowerShell,只使用 Windows 本机 zip - 没有 7-zip或者同样,因为我无法在我的工作机器上安装东西。

由于我在 Google 中找不到它,我有点担心这不可能。

【问题讨论】:

  • 据我所知,问题是他们没有使用标准的加密算法,因此发布带有 power shell 解决方案的答案可能违反了专利。 ZIP Spec 见第 6.0 节

标签: powershell zip unzip


【解决方案1】:

PowerShell 5 有 Expand-Archive,您可以在其中输入密码来解压。

Expand-Archive <zipfile> -Password (Read-Host -AsSecureString -Prompt Password)

【讨论】:

  • Expand-Archive 没有任何此类参数。
【解决方案2】:

在 Windows 7 及更高版本中,这是不可能的;密码功能被删除。我听说(但从未证实)这是由欧盟的反微软行动煽动的,声称这是反竞争的(针对 WinZip 等)。

【讨论】:

  • 你从哪里得到的?在 Windows 7 之前处理 zip 文件的唯一内置选项是 Shell.Application 对象,据我所知,它从不支持受密码保护的 zip 文件。
  • 在 Windows XP 中,.ZIP 处理功能包括在 zip 文件受密码保护时提示输入密码 - 至少在您通过 Windows 资源管理器执行此操作时是这样。据推测,相应的 COM 对象具有该功能,即使它可能没有记录或没有记录。
  • 我终于有时间对此进行更多研究。事实证明,没有任何东西被删除。 Windows 7 和更新版本仍然提示输入存档密码。如果(且仅当)旧的(和损坏的)ZipCrypto 算法用于加密存档。与此同时,zip 已经学会了 AES 加密,但微软从未费心向zipfldr.dll 添加对此的支持。尝试将 AES 加密的存档解压缩为“压缩文件夹”会在 Windows 7 和 Windows XP 上引发错误。不过,Shell.Application 对象从不支持 ZipCrypto 或 AES 加密。
猜你喜欢
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多