64位应用程序的32位应用程序的GetModuleFileNameExA在Win7和Win Server 2012上的行为有所不同?

时间:2013-09-18 16:43:06

标签: windows winapi windows-7-x64 windows-server-2012 getmodulefilename

这是一个复杂的问题,我无法在标题中进行适当的总结。

我有一个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网页以及所有相关Google搜索的前三页。

0 个答案:

没有答案