首先通过判断是否是64位系统,然后IsWow64Process函数判断是否是64位程序的进程。
主要代码:(判断否是64位系统不明的参考我另外一篇文章):
//打开进程并返回句柄
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe32.th32ProcessID);
if ((pe32.th32ProcessID !=0 ) && (pe32.th32ProcessID != 4) && (pe32.th32ProcessID != 8))
{
//64位系统执行
if (CWindOS::IsWow64())
{
BOOL y5023=TRUE;
EnumProcessModulesEx(hProcess, &hModules, sizeof(hModules), &cbNeeded,PDW);
//判断是否是64或32模块进程
IsWow64Process(hProcess,&y5023);
if (y5023==FALSE)
{
//枚举第一个模块句柄也就是自身
QueryFullProcessImageNameA(hProcess,0,strProcessName,&PDW);
}
else
{ //得到自身的完整名称
GetModuleFileNameExA(hProcess, hModules, strProcessName, sizeof(strProcessName));
}
}
else
{ //32位系统执行
EnumProcessModules(hProcess, &hModules, sizeof(hModules), &cbNeeded);
GetModuleFileNameExA(hProcess, hModules, strProcessName, sizeof(strProcessName));
}
//内存信息
// GetProcessMemoryInfo(hProcess,&nc,sizeof(nc));
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe32.th32ProcessID);
if ((pe32.th32ProcessID !=0 ) && (pe32.th32ProcessID != 4) && (pe32.th32ProcessID != 8))
{
//64位系统执行
if (CWindOS::IsWow64())
{
BOOL y5023=TRUE;
EnumProcessModulesEx(hProcess, &hModules, sizeof(hModules), &cbNeeded,PDW);
//判断是否是64或32模块进程
IsWow64Process(hProcess,&y5023);
if (y5023==FALSE)
{
//枚举第一个模块句柄也就是自身
QueryFullProcessImageNameA(hProcess,0,strProcessName,&PDW);
}
else
{ //得到自身的完整名称
GetModuleFileNameExA(hProcess, hModules, strProcessName, sizeof(strProcessName));
}
}
else
{ //32位系统执行
EnumProcessModules(hProcess, &hModules, sizeof(hModules), &cbNeeded);
GetModuleFileNameExA(hProcess, hModules, strProcessName, sizeof(strProcessName));
}
//内存信息
// GetProcessMemoryInfo(hProcess,&nc,sizeof(nc));
转载于:https://blog.51cto.com/y5023/897152