如果不打开,我如何以编程方式读取受密码保护文件的OpenXML文档属性

本文关键字:密码保护 读取 文件 属性 文档 OpenXML 方式 编程 如果不 | 更新日期: 2023-09-27 17:59:52

我有一个应用程序,它根据自定义文档属性以算法为.xlsx文件生成密码。通过将openxmlencryptproperty密钥设置为false,可以确保属性的持久性。因此,文件内容受密码保护,但属性是可见的(通过资源管理器)。

预期的功能是,在尝试打开工作簿之前,根据属性重新计算密码。不幸的是,我能找到的获取这些属性的唯一方法是打开工作簿(通过System.IO.Packaging或OpenXml.Packaging)

显然,资源管理器能够在不实际打开文件的情况下读取这些属性。我如何在C#中复制这种行为?(可能调用explorer的实例?)。

如果不打开,我如何以编程方式读取受密码保护文件的OpenXML文档属性

在使用Microsoft.WindowsAPICodePack-Shell API对属性进行了各种尝试之后,我能够获得自定义属性的唯一方法是通过StructuredStorage API,如本接受的类似问题答案的第二部分中提供的片段所示。