0

有点复杂的问题,我无法在标题中正确总结。

我有一个 64 位进程 (Foo64),它创建一个 32 位子进程 (Bar32),然后尝试获取 Bar32 的 kernel32.dll 版本的完整路径。显然我希望 Bar32 从 C:\Windows\SysWow64\kernel32.dll 加载它

在 Windows 7 上,我从 Foo64 调用 GetModuleFileNameExA(),并正确获取“C:\Windows\SysWow64\Kernel32.dll”。

在 Windows Server 2012 上,完全相同的代码返回“c:\Windows\system32\kernel32.dll”,这是 64 位 dll 位置。Bar32 显然不可能加载 64 位 dll。

我的预感是 Server 2012 告诉我 Bar32 尝试加载它的位置,而不是实际重定向的位置。我怎样才能让它告诉我真实的位置?

我有什么基本的误解吗?

我已经阅读了所有相关的 MSDN 页面,以及所有相关谷歌搜索的前三页。

4

0 回答 0