WOW64 重定向和 LoadLibrary
我正在尝试构建一个可以在 64 位 Windows 上正确运行的 32 位程序;也就是说,如果需要为用户打开一个文本文件,则该文件不需要从 C:\Program Files
重定向到 C:\Program文件(x86)
。但是,如果我只是调用 Wow64DisableWow64FsRedirection
,那么我的程序根本无法加载,因为某些系统库在加载 GUI 的某些部分时会调用 LoadLibrary
,它会尝试加载 64 位-bit 版本的系统 DLL 放入我的程序中。
我该如何解决这个问题?
编辑:
请参阅下面的屏幕截图中的问题:
编辑 2:
这是解决该问题的另一个问题:是否有任何问题如何为进程中的任意线程或整个进程禁用 WOW64 重定向?
I'm trying to build a 32-bit program that can run correctly on 64-bit Windows; that is, if it needs to open a text file for the user, the file needs to not be redirected from C:\Program Files
to C:\Program Files (x86)
. However, if I just call Wow64DisableWow64FsRedirection
, then my program fails to load at all because some system libraries call LoadLibrary
when portions of the GUI are loading, which tries to load a 64-bit version of a system DLL into my program.
How do I solve this problem?
Edit:
See the problem in the screenshot below:
Edit 2:
Here's another question that'll solve the problem: Is there any way to disable WOW64 redirection for an arbitrary thread in your process, or for your process as a whole?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简单,调用
Wow64DisableWow64FsRedirection
在调用CreateFile
,然后调用Wow64RevertWow64FsRedirection
完成后立即进行。Easy, call
Wow64DisableWow64FsRedirection
just before you callCreateFile
, and then callWow64RevertWow64FsRedirection
just as soon as it is done.