64位系统文件的静默重定向可以通过 Wow64DisableWow64FsRedirection 和 Wow64RevertWow64FsRedirection 关闭和还原。我们在应用程序中使用此功能进行某些文件身份验证。
问题在于,在执行某些任务时,我们可能会调用框架或Windows API,然后调用尚未加载的DLL中的另一个API。如果此时启用重定向,则可能加载错误版本的dll,导致“XXX不是有效的Win32应用程序”错误。
我已确定了一些相关的API调用,并希望在调用期间强制开启重定向,然后将其恢复回来-与提供的Win32 API相反。不幸的是,这些调用不像某些注册表方法那样提供任何WOW64兼容性标志。
显而易见的替代方案是使用 Wow64EnableWow64FsRedirection,将 Wow64FsEanbledRedirection 设置为TRUE。但是,关于使用此方法有各种警告,并有一个注意事项,即它不兼容已替换它的禁用/还原组合方法。
是否有一种安全的方法来强制针对给定的Win32调用启用重定向?
文档说明重定向是特定于线程的,因此我考虑为具体调用启动一个新线程,带有适当的锁定和等待,但我希望找到一个更简单的解决方案。
问题在于,在执行某些任务时,我们可能会调用框架或Windows API,然后调用尚未加载的DLL中的另一个API。如果此时启用重定向,则可能加载错误版本的dll,导致“XXX不是有效的Win32应用程序”错误。
我已确定了一些相关的API调用,并希望在调用期间强制开启重定向,然后将其恢复回来-与提供的Win32 API相反。不幸的是,这些调用不像某些注册表方法那样提供任何WOW64兼容性标志。
显而易见的替代方案是使用 Wow64EnableWow64FsRedirection,将 Wow64FsEanbledRedirection 设置为TRUE。但是,关于使用此方法有各种警告,并有一个注意事项,即它不兼容已替换它的禁用/还原组合方法。
是否有一种安全的方法来强制针对给定的Win32调用启用重定向?
文档说明重定向是特定于线程的,因此我考虑为具体调用启动一个新线程,带有适当的锁定和等待,但我希望找到一个更简单的解决方案。