4

我正在编写一个处理 PowerPoint 演示文稿的应用程序,并且我正在研究检测 PowerPoint 演示文稿是否有密码的方法,如果有密码则停止处理。

4

3 回答 3

3

在我看来,没有办法检查演示文稿是否受密码保护。您必须先打开文档才能访问属性。打开文档时,您必须提供密码。

您可以检查一个密码属性。

在 Expert Exchange 上找到了一种解决方法

问题如下:Visual Basic 是一个单线程应用程序,这意味着您不能搁置某个程序并继续执行另一个程序(在同一个应用程序中)。当 powerpoint 设置了“打开”密码时,应用程序中的 CreateObject 过程将暂停,直到 powerpoint 释放它,这是用户输入密码的时候。我知道没有办法解决这个问题,但你可以做一个解决方法:

制作2个应用程序,1个应用程序是您已经拥有的应用程序,第二个是“powerpoint unlocker”。您在应用程序 1 中打开受保护的 powerpoint 演示文稿之前运行第二个程序。您可以使用 shell 命令执行此操作。“powerpoint unlocker”可以随心所欲地高级,例如,您可以提供命令行参数来指定必须用什么密码解锁哪个演示文稿。然后您使用 findwindow api 来获取锁定演示文稿的窗口句柄。完成后,您可以使用 sendmessage api输入密码。在此之后,“powerpoint unlocker”卸载,第一个应用程序可以继续执行。

我希望这有帮助!

奥斯莫德

于 2008-10-19T11:11:44.970 回答
1

考虑看看这个 - http://blogs.msdn.com/b/openspecification/archive/2009/07/17/overview-of-protected-office-open-xml-documents.aspx

对于 PPTX 文档,您可以检查前 8 个字节以查看文件头(对于加密文件应该是 [d0cf 11e0 a1b1 1ae1]),并知道它是否是加密的 PPTX。

但是,对于使用 Office 2003 创建的文件(默认扩展名为 .ppt),标头是相同的(MS-CFB 标头)。因此,如果有人创建了一个 office 2003 文档,然后将其重命名为 PPTX,您的代码会将其视为加密文档(但不一定是加密文档)。

如果您正在处理已在 Powerpoint 中打开的文档,您可以使用 SaveCopyAs 功能首先将文档以 pptx 格式保存到磁盘(使用第二个参数中的默认选项),然后检查标题以检查它是否是加密的文件。

于 2012-07-26T04:18:04.023 回答
1

考虑看看这个 - https://msdn.microsoft.com/ko-kr/library/dd948895(v=office.12).aspx

对于 PPT(office 2003) 文档,您可以检查无符号整数(0xF3D1C4DF 位)来识别文件是否被加密。

于 2016-11-11T00:53:31.653 回答