win32位应用程序是否会在64位服务器上运行?

时间:2010-11-19 04:45:52

标签: windows 32bit-64bit

这是我的方案:我工作的公司将应用程序部署到32位Windows 2003服务器,他们想要迁移到64位的Windows 2008 Server。已经注意到这些32位定制开发的应用程序不能在64位机器上运行。我没有意识到这一点。

我一直认为32位软件CAN可以在64位操作系统上运行,只需使用32位地址。另一个64位软件无法在32位操作系统上运行。在64位上,必须创建64位软件,但仍然可以创建专为32位机器设计的软件。

有人可以详细说明一下吗?

2 个答案:

答案 0 :(得分:3)

通常,32位应用程序将在64位操作系统下运行。如果您的应用程序依赖于32位内核驱动程序(例如,VPN客户端),那么您将必须移植到64位。

答案 1 :(得分:3)

通常,32位应用程序将在64位Windows下运行(这在技术上称为WOW64 - Windows On Windows)。这适用于迄今为止的所有64位Windows版本,包括Server。

WOW64进程在任务管理器中用* 32标记,例如:chrome.exe * 32。 Sysinternals的' Process Explorer有一个单独的列:Image Type(64 vs 32-bit)。

如果应用程序的组件托管在其他进程中,那么这些组件必须适应他们托管的进程。示例:

  • Shell扩展程序托管在explorer.exe中,其位数与操作系统匹配。位元。因此,您应该在32位和64位编译扩展,并注册与OS匹配的扩展名。安装过程中的位数。
  • 内核模式驱动程序托管在内核中,其位数也与操作系统匹配。位元。因此,以上适用。
  • Winsock LSP(分层服务提供程序)托管在64位(本机)和32位(WOW64)的所有进程中。因此,您应该以32位和64位编译LSP,并在安装期间将它们注册到各自的目录中。

还有关于文件重定向(System32 / SysWOW64 / SysNative)和注册表重定向(Wow6432Node)的注意事项,我不会介绍。