C++ GetBinaryType Failing

C++ GetBinaryType Failing

本文关键字:Failing GetBinaryType C++      更新时间:2023-10-16

我使用GetBinaryType来检查可执行文件是32位还是64位。我正在针对一个64位文件进行测试,但它一直失败。我相信这是因为我比较DWORD结果的方式?

我正在使用Visual Studio 2010 C++:

DWORD dwBinaryType;
if (GetBinaryType(ChildFile(), &dwBinaryType) == 6)
{
    MessageBox(NULL, L"64bit Detected...", L"Debug: GetBinaryType", MB_OK); // DEBUG
}
else
{
    MessageBox(NULL, L"Probably 32bit...", L"Debug: GetBinaryType", MB_OK); // DEBUG
}

任何建议都将不胜感激。

根据MSDN的GetBinaryType:

返回值

如果文件是可执行的,则返回值为非零。该函数设置lpBinaryType指向的变量,以指示文件的可执行类型。

将上面的代码更改为这个应该可以做到:

if (GetBinaryType(ChildFile(), &dwBinaryType)
    && dwBinaryType == SCS_64BIT_BINARY)
{
  // ...
}