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

发布于 2024-10-03 06:30:35 字数 267 浏览 0 评论 0原文

以下是我的场景:我工作的公司将应用程序部署到 32 位 Windows 2003 服务器,他们希望迁移到 64 位 Windows 2008 Server。值得注意的是,这些 32 位定制开发的应用程序无法在 64 位计算机上运行。我不知道这一点。

我一直认为32位软件可以在64位操作系统上运行并且只使用32位地址。另一方面,64 位软件无法在 32 位操作系统上运行。在 64 位上,确实必须创建 64 位软件,但仍然可以创建专为 32 位计算机设计的软件。

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

Here's my scenario: the company I work has applications deployed to a 32bit Windows 2003 server and they want to move to a Windows 2008 Server that is 64 bit. It has been noted that these 32bit custom developed applications will not run on a 64 bit machine. I was not aware of this.

I have always thought that 32bit software CAN run on a 64 bit OS and just use the 32bit address. A 64 bit software on the other cannot run on a 32 bit OS. On a 64 bit, one does have to create 64 bit software but can and still also create software that is designed for 32 bit machines.

Can someone please elaborate on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心清如水 2024-10-10 06:30:35

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

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

如果应用程序具有托管在其他进程内的组件,则这些组件必须适应托管它们的进程。示例:

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

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

In general, 32-bit applications will run under a 64-bit Windows (This is technically called WOW64 - Windows On Windows). This applies to all 64-bit Windows version to date, including Server.

WOW64 processes are marked in task manager with *32, For example: chrome.exe *32. Sysinternals' Process Explorer has a separate column for this: Image Type (64 vs 32-bit).

If the app has components hosted inside other processes, then those components must accommodate processes they're hosted in. Examples:

  • Shell extensions are hosted in explorer.exe, whose bitness matches the OS' bitness. Therefore, you should compile the extension in both 32- and 64-bit, and register the one matching the OS' bitness during installation.
  • Kernel-mode driver are hosted in the Kernel, whose bitness also matches the OS' bitness. So, the above applies.
  • Winsock LSPs (Layered Service Providers) are hosted in all processes, both 64-bit (native) and 32-bit (WOW64). Therefore, you should compile the LSP in both 32- and 64-bit, and register both in their respective catalogs during installation.

There are also considerations regarding file redirection (System32 / SysWOW64 / SysNative) and registry redirection (Wow6432Node), which I will not go into.

冷血 2024-10-10 06:30:35

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

In general, 32-bit applications will run under a 64-bit OS. If your app relies on a 32-bit kernel driver (say, a VPN client), then you will have to port to 64-bit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文