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

时间:2016-08-03 10:52:16

标签: c# excel

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

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

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

1 个答案:

答案 0 :(得分:0)

在尝试使用Microsoft.WindowsAPICodePack-Shell API来利用这些属性之后,我能够通过StructuredStorage API获取自定义属性的唯一方法就是this第二部分中提供的片段接受了类似问题的答案。