14

Windowsプロセスハンドルが与えられた場合、C ++コードを使用して、プロセスが32ビットか64ビットかをどのように判断できますか?

4

5 に答える 5

45

プロセス ハンドルがある場合は、 を使用しますIsWow64Process()

true と報告された場合IsWow64Process()、プロセスは 64 ビット OS で実行されている 32 ビットです。

IsWow64Process()が false (または に存在しない) を報告する場合kernel32.dll、プロセスは 32 ビット OS 上で 32 ビット実行されているか、64 ビット OS 上で 64 ビット実行されています。OS 自体が 32 ビットか 64 ビットかを知るには、GetNativeSystemInfo()(またはGetSystemInfo()ifGetNativeSystemInfo()が で使用できない) を使用しますkernel32.dll

于 2013-01-06T20:58:25.040 に答える
0

モジュールへのハンドルがある場合、これを行うことができます:

IMAGE_NT_HEADERS * headers = ImageNtHeader(handle);

if ( headers->FileHeader.Machine == IMAGE_FILE_MACHINE_I386 )
{
    //module is x86
}
else if  ( headers->FileHeader.Machine == IMAGE_FILE_MACHINE_AMD64 )
{
    //module is x64
}

私は自分の答えから助けを得ました。

于 2013-01-06T16:43:07.250 に答える