我想检测所有可执行文件,而不管文件扩展名是什么。
我尝试使用GetBinaryType
执行此操作,但此API只检测.EXE
和.COM
文件。如何检测所有可执行文件。
DWORD binaryType;
if(GetBinaryType("1.dll",&binaryType))
{
if(binaryType >= 0 && binaryType < 7)
cout << "ok";
}
答案 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
文件。