在64位操作系统上运行32位的程序

时间:2022-01-20 04:31:51

运行 32 位程序

WOW64 子系统使 32 位程序能够在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的运行而不用修改。 WOW64 子系统是通过在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的创建 32 位环境。 WOW64 子系统有关的详细信息,请参阅 Microsoft 平台 SDK 文档的 64 位 Windows 部分中的"运行 32-位应用程序"主题。 若要查看此文档,请访问下面的 Microsoft 网站: http://msdn2.microsoft.com/en-us/library/aa384249.aspx() http://msdn2.microsoft.com/en-us/library/aa384249.aspx

程序性能方面的考虑

WOW64 子系统创建基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的 32 位环境。 某些 32 位程序可能会较慢运行这些操作系统的系统上而不愿在 32 位版本的 Windows Server 2003 和 Windows XP。 例如,32 位程序可能运行得更慢 Windows XP 专业 x64 版上比它像在 Microsoft Windows XP 专业版上。 或者,某些 32 位程序需要大量内存可能会表现出更高的基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的性能。 此性能提高的原因是基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的支持更多的物理内存比 32 位版本的 Windows Server 2003 和 Windows XP 专业版。

有关 64 位和 32 位的 Windows 版本之间的内存管理之间的区别的详细信息,请参阅 Microsoft 平台 SDK 文档中的内存管理有关本节中的"虚拟地址空间"主题。 若要查看此文档,请访问下面的 Microsoft 网站: http://msdn2.microsoft.com/en-us/library/aa366912.aspx() http://msdn2.microsoft.com/en-us/library/aa366912.aspx

WOW64 子系统的限制

WOW64 子系统不支持下列程序:
  • 对于 16 位操作系统进行编译的程序
  • 被编译为 32 位操作系统的内核模式程序

16 位程序

不支持基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的 16 位程序或 16 位程序组件。 软件模拟所需的基于 x64 的版本或 Windows XP 专业 x64 版的 Windows Server 2003 上运行 16 位程序会大大减少这些程序的性能。

将一个 16 位的安装经常用于安装和配置的 32 位程序。 此外,某些 32 位程序需要 16 位组件,才能正确运行。 虽然在安装后需要 16 位组件的 32 位程序可能会正确运行,您不能使用 16 位安装程序安装的 32 位程序。 需要 16 位组件的程序不能运行在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版。

如果尝试运行 16 位文件或组件的 32 位程序需要 16 位组件,将 32 位程序将在系统日志中记录一条错误消息。 然后,操作系统将让 32 位程序处理错误。

要确定是否在程序需要一个 16 位组件,请安装并运行该程序。 如果该程序生成一条错误消息,该程序的制造商联系与基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的兼容的更新。

32 位驱动程序

基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版不支持 32 位驱动程序。 必须专门为基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的编译所有硬件设备驱动程序和程序的驱动程序。

如果尝试在计算机上安装 32 位驱动程序的 32 位程序正在运行基于 x64 版本的 Windows Server 2003 SP1 或 Windows XP 专业 x64 版的驱动程序安装失败。 在这种情况,或 Windows Server 2003 SP1 的 Windows XP 专业 x64 版的基于 x64 版本的 32 位程序报告的错误。

如果尝试注册为正在运行基于 x64 版本或 Windows XP 专业 x64 版的 Windows Server 2003 的计算机上自动启动 32 位驱动程序的 32 位程序,认识到引导加载程序在计算机上不受支持的 32 位驱动程序。 基于 x64 版本的 Windows Server 2003 或 Windows XP 专业 x64 版的不启动 32 位驱动程序,但不启动其他已注册的驱动程序。

要确定是否在程序需要 32 位驱动程序,请安装并运行该程序。 如果该程序生成一条错误消息,该程序的制造商联系与基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的兼容的更新。

其他注意事项

注册表和文件重定向

WOW64 子系统将从 64 位二进制文件的 32 位二进制文件隔离通过将注册表调用和某些文件系统调用重定向。 WOW64 子系统将隔离的二进制文件,以防止意外地从 64 位二进制文件访问数据的 32 位二进制文件。 例如,从 %systemroot%\System32 文件夹运行.dll 文件的 32 位二进制文件可能会无意中尝试访问不兼容的 32 位二进制文件的 64 位的.dll 文件。 要防止这样,WOW64 子系统将重定向到 %systemroot%\SysWOW64 文件夹从 %systemroot%\System32 文件夹的访问。 这种重定向可防止兼容性错误,因为它要求要被专门用于使用 32 位程序的.dll 文件。

有关文件系统和注册表重定向的详细信息,请参阅 Microsoft 平台 SDK 文档的 64 位 Windows 部分中的"运行 32-位应用程序"主题。 若要查看此文档,请访问下面的 Microsoft 网站: http://msdn2.microsoft.com/en-us/library/aa384249.aspx() http://msdn2.microsoft.com/en-us/library/aa384249.aspx WOW64 子系统将 32 位二进制调用重定向而不需要更改对 32 位二进制文件。 但是,当您执行某些任务时可以看到此重定向的证据。例如,如果在 64 位命令提示符下键入命令行脚本,在命令提示符下可能不能访问 32 位程序文件文件夹中的程序。 WOW64 子系统将重定向并将 32 位程序安装程序文件 (x86) 文件夹中。 若要访问正确的文件夹中,则必须更改该命令行脚本。 另外,也必须在 32 位命令提示符下键入命令行脚本。 32 位命令提示符下自动重定向到正确的 32 位目录的文件系统调用。

若要启动 32 位命令提示符处,执行以下步骤:
  • 单击开始,单击运行,键入%windir%\SysWoW64\cmd.exe,然后单击确定.