在Windows XP上运行32位程序
Rad Studio XE3有一个问题:我的程序(32位)定期在我的机器上运行(Windows 7-64位),但是当我尝试运行“xp模式“出现以下错误消息:”找不到KERNEL32.dll库中Wow64RevertWow64FsRedirection的入口点“。在Windows XP上运行32位程序
我必须在计算机上运行它,32位,安装xp。
在此先感谢。
Wow64RevertWow64FsRedirection函数仅在Win64系统上可用。
最低支持的客户端 Windows Vista中,Windows XP专业x64版[桌面应用程序仅]
它不是东西,是在Delphi的RTL和VCL任何地方使用,所以它的东西,你的代码(或您正在使用的第三方组件或库)正在执行。
为了使应用程序与32位版本的Windows兼容,您需要将其删除(以及任何其他64位唯一函数)。
好的谢谢你的回复。 – user2377071
WOW64文件系统重定向仅在WOW64下运行时才有意义。因此,该函数仅适用于在64位系统上运行的32位进程,即在WOW64下运行。该函数适用于64位进程,但始终失败(返回FALSE
)。该功能在32位系统上不可用。
因此,如果您希望程序在32位操作系统上运行,则不得使用该函数的加载时链接。如果你从64位进程调用它,你必须期望它失败。
如果要禁用文件系统重定向,那么你应该:
- 使用运行时链接。这是拨打
GetModuleHandle('kernel32')
和GetProcAddress()
。 - 添加代码以处理
GetProcAddress()
可能返回NULL
的事实。在这种情况下,您只需跳过禁用文件系统重定向的调用。 - 如果进程是64位,跳过调用以禁用文件系统重定向,因为它们总是失败。
现在,也有极少数场景中禁用文件系统重定向是合适的。一般来说,根据我的经验,如果开发人员足够认识这种情况,那么他们也足够了解上面列出的三点。所以,我认为你的代码根本不应该禁用文件系统重定向。我想知道是否有更好的解决方案,导致您禁用文件系统重定向
有时候人们会花很多时间爬过墙壁,而不是离开一小段距离 –
这是我见过最糟糕的一段时间。 *关于通用计算硬件和软件的问题与Stack Overflow无关。*的确如此。但关于为什么调用Win32 API函数无法解决的问题非常多。关闭选民,对你感到羞耻! –