如何检测Windows中的所有可执行文件,包括(exe,dll,msi,vxd,sys等)

时间:2018-01-24 10:49:36

标签: winapi

我想检测所有可执行文件,而不管文件扩展名是什么。 我尝试使用GetBinaryType执行此操作,但此API只检测.EXE.COM文件。如何检测所有可执行文件。

DWORD binaryType;
if(GetBinaryType("1.dll",&binaryType))
{
    if(binaryType >= 0 && binaryType < 7)
         cout << "ok";
}

1 个答案:

答案 0 :(得分:0)

使用CreateFileMapping选项打开文件调用SEC_IMAGE。确实这样做GetBinaryType。仅创建有效的pe文件部分。@ RbMm

这项工作。

HANDLE file=CreateFile("example.dll",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0);
HANDLE mapFile=CreateFileMapping(file,NULL,PAGE_READ_ONLY|SEC_IMAGE,0,0,0);
int err=GetLastError();

如果err等于0,则输入文件为pe;但此方法不适用于.msi文件。