VC判断64位和32位模块进程、枚举进程

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

你可能感兴趣的:(判断64位和32位模块进程)