WOW64 重定向和 LoadLibrary

发布于 2024-10-12 12:30:02 字数 496 浏览 3 评论 0原文

我正在尝试构建一个可以在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北城半夏 2024-10-19 12:30:02

简单,调用 Wow64DisableWow64FsRedirection 在调用 CreateFile,然后调用 Wow64RevertWow64FsRedirection 完成后立即进行。

Easy, call Wow64DisableWow64FsRedirection just before you call CreateFile, and then call Wow64RevertWow64FsRedirection just as soon as it is done.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文