首先通过判断是否是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));