以编程方式确定 Excel 文件 (.xls) 是否包含宏
有没有办法以编程方式确定 .xls 是否包含宏,而无需在 Excel 中实际打开它?
还有什么方法可以检查这些宏是用哪个证书(包括时间戳证书)签名的?再次不使用 Excel。
我特别想知道当存在宏时,是否有任何字符串始终显示在 Excel 文件的原始数据中。
Is there any way to programmatically determine if an .xls contains macros, without actually opening it in Excel?
Also are there any methods to examine which certificate (including timestamp cert) these macros are signed with? Again without using Excel.
I'm wondering in particular if there are any strings that always show up in the raw data of an Excel file when macros are present.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,您可以将 .xls 文件作为复合文档文件打开,并检查其中是否包含 VBA 文件夹和包含 VBA 代码的流。
这篇 CodeProject 文章中提供了示例代码:
证书信息存储在DocumentSummaryInformation流中。如果您想从那里读出信息,您应该深入研究 Microsoft 提供的文件格式规范:
Yes, you can open the .xls file as a compound document file and check whether is contains a VBA folder and streams containing VBA code.
Sample code is available in this CodeProject article:
The certificate information is stored in the DocumentSummaryInformation stream. If you want to read out the information from there you should dig into the file format specifications available from Microsoft:
包含宏的 xls 文件应包含一个类似于“
不知道这是否是万无一失的解决方案”的字符串
An xls file containing a macro should contain a string looking something like
Don't know if this is a surefire solution though