【发布时间】:2010-04-20 00:50:27
【问题描述】:
可以使用 Wow64DisableWow64FsRedirection 和 Wow64RevertWow64FsRedirection 关闭 64 位系统文件到其 32 位等效文件的静默重定向关闭和恢复。我们将其用于应用程序中的某些文件身份检查。
问题在于,在执行其中一些任务时,我们可能会调用框架或 Windows API,而后者随后会调用 DLL 中尚未加载的另一个 API。如果此时启用了重定向,则可能会加载错误版本的 dll,从而导致 XXX is not a valid Win32 application 错误。
我已经确定了一些有问题的 API 调用,以及我想在调用期间强制重定向然后将其恢复回来 - 只是提供的 Win32 的 相反蜜蜂。不幸的是,这些调用不像某些注册表方法那样提供任何类型的 WOW64 兼容性标志。
显而易见的替代方法是使用 Wow64EnableWow64FsRedirection,将 TRUE 传递给 Wow64FsEanbledRedirection。但是,对于使用此方法有各种警告,并注意它与已替换它的禁用/恢复组合方法不兼容。
是否有一种安全的方法可以为给定的 Win32 调用强制重定向on?
文档指出重定向是特定于线程的,因此我考虑为特定调用启动一个新线程,并使用适当的锁和等待,但我希望有一个更简单的解决方案。
【问题讨论】: