【C/C++】指定プロセスがx 64であるか否かを判断する方法

714 ワード

BOOL IsWow64ProcessEx(HANDLE hProcess)
{
	//      x86 ,         x64
	bool isX86 = false;
#ifndef _WIN64
	isX86 = GetProcAddress(GetModuleHandle(TEXT("ntdll")), "NtWow64DebuggerCall") == nullptr ? TRUE : FALSE;
#endif
	if (isX86)
		return FALSE;

	//       ,   x64 ,    IsWow64Process    
	typedef BOOL(WINAPI *ISWOW64PROCESS)(HANDLE, PBOOL);
	ISWOW64PROCESS fnIsWow64Process;
	BOOL isWow64 = TRUE;
	fnIsWow64Process = (ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
	if (fnIsWow64Process != nullptr)
		fnIsWow64Process(hProcess, &isWow64);
	return !isWow64;
}

OpenProcessでターゲットプロセスを開き、ハンドルを入れればOKです.