【C/C++】判断指定进程是否为x64的方法

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了。

你可能感兴趣的:(【C/C++】判断指定进程是否为x64的方法)