2

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?

tshepang
  • 12,111
  • 21
  • 91
  • 136
user118190
  • 2,139
  • 7
  • 29
  • 45

2 Answers2

4

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.

Jonathan
  • 6,939
  • 4
  • 44
  • 61
3

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.

Gabe
  • 84,912
  • 12
  • 139
  • 238
  • This should come with caveats (although they are perhaps more relevant in 2012 than they were in 2010!). In general, *most* 64-bit OSes come with compatibility capabilities that allow them to also run 32-bit applications. This is not always true, and in particular it is becoming more common to find Linux installations where these compatibility pieces are optional packages that are not installed by default. – Brooks Moses Dec 23 '12 at 05:40