win32位应用程序将运行在64位服务器上吗?

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

我一直认为32位软件可以在64位操作系统上运行,只需要使用32位地址。 另一个64位软件不能在32位操作系统上运行。 在64位上,必须创build64位软件,但是仍然可以创build专为32位机器devise的软件。

有人可以详细说明这一点吗?

Solutions Collecting From Web of "win32位应用程序将运行在64位服务器上吗?"

通常,32位应用程序将在64位Windows(这在技术上称为WOW64 – Windows在Windows上)下运行。 这适用于所有64位Windows版本,包括服务器。

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

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

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

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

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