【问题标题】:How to enum another process modules in Windows XP 64bit如何在 Windows XP 64bit 中枚举另一个进程模块
【发布时间】:2011-09-20 14:06:21
【问题描述】:

我已经问过如何从 64 位进程 here 枚举 32 位进程模块。答案是EnumProcessModulesEx。在 Windows 7 x64 上一切正常,但 Windows XP x64 呢? Vista 及更高版本似乎支持此 api。那么在那里有什么方法呢?

【问题讨论】:

    标签: .net winapi dll c#-2.0


    【解决方案1】:

    大概是这样的。写在记事本里,所以可能是错误的。但你明白了。

    HANDLE        hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
    MODULEENTRY32 me32      = {0};
    
    me32.dwSize = sizeof(MODULEENTRY32);
    Module32First( hSnapshot, &me32 );
    
    do {
      ...
    } while( Module32Next( hSnapshot, &me32 ) );
    
    CloseHandle( hSnapshot );
    

    【讨论】:

    • 我的进程是64bit,另一个是32bit,好像效果不好。见这里:masm32.com/board/…
    • 所以看起来检查 64 位进程需要调用者也是 64 位。
    【解决方案2】:

    CreateToolHelp32Snapshot 会做到的。

    【讨论】:

    • 我在下面尝试了 Mike Kwan 的解决方案,结果与 OP 相同——它只返回 64 位模块
    猜你喜欢
    • 2012-04-03
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2022-11-14
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多