以编程方式确定Excel文件(.xls)是否包含macros

有没有什么办法可以通过编程来确定.xls是否包含macros,而不用在Excel中实际打开它?

还有什么方法来检查哪些证书(包括时间戳证书)这些macros签名? 再次不使用Excel。

我特别想知道是否有任何string总是出现在Excel文件的原始数据中。

是的,您可以打开.xls文件作为复合文档文件,并检查是否包含VBA文件夹和包含VBA代码的stream。

示例代码在这个CodeProject文章中可用:

另一个OLE Doc Viewer但带有编辑function

证书信息存储在DocumentSummaryInformationstream中。 如果你想从那里读出信息,你应该深入微软的文件格式规范:

[MS-OSHARED]:Office常用数据types和对象结构规范

[MS-OFFCRYPTO]:Office文档密码结构规范

包含macros的xls文件应该包含一个类似于string的string

Keyboard Shortcut: 

不知道这是否是一个绝对的解决scheme

Interesting Posts