API Защитника Windows для сканирования каталога на наличие вредоносных программ

Используя API Защитника Windows, я пытаюсь выполнить сканирование на наличие вредоносных программ в папке. Следуя документации, я написал код:

MPRESOURCE_INFO ResourceInfo = { 0 };
MPSCAN_RESOURCES ScanResource = { 0 };
PMPRESOURCE_INFO ResourceInfoArray = NULL;
...
ResourceInfo.Scheme = L"dir";
ResourceInfo.Path = L"C:\\temp";
ResourceInfo.Class = 0;

// ResourceInfoArray was Allocated before
*ResourceInfoArray = ResourceInfo;
ScanResource.dwResourceCount = 1;
ScanResource.pResourceList = ResourceInfoArray;

// Opened hMpManager before using MpScanStart
hRetval = MpScanStart(hMpManager, MPSCAN_TYPE_RESOURCE, 0, &ScanResource, NULL, &ScanHnadle);

Из которого я получаю сообщение об ошибке: An unexpected problem occurred. Install any available updates, and then try to start the program again. For information on installing updates, see Help and Support.

Однако, если я изменю определение ResourceInfo на:

ResourceInfo.Scheme = L"file";
ResourceInfo.Path = L"C:\\temp\\MyFile.exe";
ResourceInfo.Class = 0;

Он отлично работает, правильно обнаружив файл. Суть в том, что код работает для файлов, но не работает для каталогов. Кто-нибудь знает, что я делаю не так с поиском по каталогу?

0 ответов

Анализируя журналы событий, создаваемые MpCmdRun.exe, я обнаружил, что он использует схему "папка" вместо "dir". Это изменение заставило мой код работать.

ResourceInfo.Scheme = L"folder";

Пути к папкам не обязательно должны заканчиваться обратной косой чертой, но для дисков это необходимо: (F:\).

Другие вопросы по тегам