Программно определите, содержит ли Excel File (.xls) макросы

Там какой-либо путь состоит в том, чтобы программно определить, содержит ли .xls макросы, на самом деле не открывая его в Excel?

Также там какие-либо методы должны исследовать, с каким сертификатом (включая сертификат метки времени) они макросы подписываются? Снова не используя Excel.

Я задаюсь вопросом в особенности, если существуют какие-либо строки, которые всегда обнаруживаются в необработанных данных файла Excel, когда макросы присутствуют.

6
задан Dirk Vollmar 31 January 2018 в 13:53
поделиться

2 ответа

Да, вы можете открыть файл .xls как составной файл документа и проверить, содержит ли он папку VBA и потоки, содержащие код VBA.

Образец кода доступен в этой статье CodeProject:

Еще один OLE Doc Viewer, но с возможностью редактирования

Информация о сертификате хранится в потоке DocumentSummaryInformation. Если вы хотите считать информацию оттуда, вам следует покопаться в спецификациях формата файла, доступных в Microsoft:

[MS-OSHARED]: Office Common Data Types and Objects Structure Specification

[MS-OFFCRYPTO]: Спецификация структуры криптографии документов Office

2
ответ дан 17 December 2019 в 20:29
поделиться

Файл xls, содержащий макрос, должен содержать строку, выглядящую примерно так

Keyboard Shortcut:

Не знаю, является ли это надежным решением, хотя

0
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: