Windows Defender API 用于扫描目录中的恶意软件
Posted
技术标签:
【中文标题】Windows Defender API 用于扫描目录中的恶意软件【英文标题】:Windows Defender API to scan a directory for malwares 【发布时间】:2017-04-25 08:50:54 【问题描述】:使用 Windows Defender API ,我正在尝试扫描文件夹中的恶意软件。 跟着The documentation我写了代码:
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;
它工作得很好,以正确的方式检测文件。 归根结底-代码适用于文件,但不适用于目录。 有谁知道我在目录搜索中做错了什么?
【问题讨论】:
我猜它不扫描目录,只扫描文件,而且你需要自己遍历目录树。 上面写着"file" or "dir" 试试“C:\\Temp\\” 这个之前试过了,也不行 @KonstantinL:C:\\Temp\\
没有命名目录。 C:\\Temp
确实如此。
【参考方案1】:
分析 MpCmdRun.exe 创建的事件日志我发现它使用方案“文件夹”而不是“目录”。这种变化使我的代码正常工作。
ResourceInfo.Scheme = L"folder";
文件夹路径不必以反斜杠结尾,但驱动器需要它:(F:\)。
【讨论】:
以上是关于Windows Defender API 用于扫描目录中的恶意软件的主要内容,如果未能解决你的问题,请参考以下文章
window server 2012 域策略 关闭 win10 Windows Defender
window server 2012 域策略 关闭 win10 Windows Defender