【问题标题】:Using Module32First/Next to Enumerate 32bit Process Modules from 64bit Process使用 Module32First/Next 从 64 位进程枚举 32 位进程模块
【发布时间】:2019-12-13 12:47:19
【问题描述】:

代码如下:

 hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE32, dwPID ); 
  if( hModuleSnap == INVALID_HANDLE_VALUE ) 
  { 

    return( r_mi ); 
  } 


  me32.dwSize = sizeof( MODULEENTRY32 ); 

  if( !Module32First( hModuleSnap, &me32 ) ) 
  { 

    CloseHandle( hModuleSnap );
    return( r_mi ); 
  } 

  do 
  { 
      MessageBoxA(0,me32.szModule,0,0);

  } while( Module32Next( hModuleSnap, &me32 ) );

问题是当尝试从 64 位进程枚举 32 位进程的模块时,仅列出 x64 模块。

来自 MSDN 的 TH32CS_SNAPMODULE32: 当从 64 位进程调用时,包括快照中 th32ProcessID 中指定的进程的所有 32 位模块。

但是,它仍然只列出 x64 模块

有人知道解决这个问题的方法吗?

【问题讨论】:

  • 你必须使用 TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE
  • 工作。非常感谢!
  • @HansPassant:应该作为答案而不是评论发布。

标签: c++ winapi


【解决方案1】:

你必须使用 TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE 感谢 Hans Passant 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 2011-11-21
    • 1970-01-01
    • 2022-01-20
    • 2011-01-01
    • 2013-03-11
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多