1

此代码在 Windows X64 中找不到 x32 dll:

public int DllImageAddress(string dllname)
    {
        ProcessModuleCollection modules = MyProcess[0].Modules;

        foreach (ProcessModule procmodule in modules)
        {
            if (procmodule.ModuleName.IndexOf(dllname) != -1)
            {
                return (int)procmodule.BaseAddress;
            }
        }
        return -1;

    }

如何获取 Windows 7 x64 中的 x32 模块列表?

(例如:Windows 7 X86 中的 DllImageAddress("Mydll.dll") 返回非 -1,在 x64 中返回 -1)

4

1 回答 1

0

我 100% 确定,但你可能不得不使用EnumProcessModule. 里面有一个过滤选项LIST_MODULES_32BIT。只需看看http://msdn.microsoft.com/en-us/library/windows/desktop/ms682633(v=vs.85).aspx

您可能还想查看http://www.pinvoke.net/default.aspx/psapi.enumprocessmodules上的 C# 签名。

编辑:对于 Windows XP ,标志 CreateToolhelp32Snapshot应该足够了。http://msdn.microsoft.com/en-us/library/windows/desktop/ms682489(v=vs.85).aspxTH32CS_SNAPMODULE32

于 2013-06-23T16:54:56.860 回答