这是一个复杂的问题,我无法在标题中进行适当的总结。
我有一个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搜索的前三页。