Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows win32位应用程序是否在64位服务器上运行?_Windows_32bit 64bit - Fatal编程技术网

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

Windows win32位应用程序是否在64位服务器上运行?,windows,32bit-64bit,Windows,32bit 64bit,下面是我的场景:我工作的公司将应用程序部署到32位的Windows 2003服务器上,他们希望移动到64位的Windows 2008服务器上。需要注意的是,这些32位自定义开发的应用程序不会在64位机器上运行。我没有意识到这一点 我一直认为32位软件可以在64位操作系统上运行,只需使用32位地址。另一个系统上的64位软件不能在32位操作系统上运行。在64位上,您确实需要创建64位软件,但也可以创建为32位机器设计的软件 有人能详细说明一下吗?一般来说,32位应用程序将在64位操作系统下运行。如果

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

我一直认为32位软件可以在64位操作系统上运行,只需使用32位地址。另一个系统上的64位软件不能在32位操作系统上运行。在64位上,您确实需要创建64位软件,但也可以创建为32位机器设计的软件


有人能详细说明一下吗?

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

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

WOW64进程在任务管理器中标记为*32,例如:chrome.exe*32。Sysinternals的Process Explorer对此有一个单独的列:映像类型(64位vs 32位)

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

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

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

感谢您的热烈响应!这应该附带警告(尽管2012年可能比2010年更具相关性!)。通常,大多数64位操作系统都具有兼容功能,允许它们同时运行32位应用程序。这并不总是正确的,尤其是在Linux安装中,这些兼容性部件是默认情况下未安装的可选软件包的情况越来越普遍。