Gizmo's Freeware is Recruiting

Gizmos Needs YouWe are currently looking for people with skills and/or interest in the following areas:

- Anonymous Surfing Service
- Mobile Apps contributors
- Mac Section contributors
 

If this sounds like you then click here for more details

 

How Windows 64-bit Supports 32-bit Applications

Introduction

This article provides an overview of the Windows on Windows 64 (WOW64) sub-system and associated techniques that support 32-bit applications under Windows 64-bit.

 
Discussion

Windows 32-bit on Windows 64 (WOW64)

WOW64 emulates 32-bit Windows

Under Windows 64-bit, 32-bit applications run on top of an emulation of a 32-bit operating system that is called Windows 32-bit on Windows 64-bit, or WOW64 for short.  WOW64 intercepts all operating system calls made by a 32-bit application.

For each operating system call made, WOW64 generates native 64-bit system calls, converting 32-bit data structures into 64-bit aligned structures. The appropriate native 64-bit system call is passed to the operating system kernel, and any output data from the 64-bit system call is converted into a format appropriate for the calling application before being passed back.

Like 32-bit applications, WOW64 runs in user mode so any errors that occur in translating an operating system call will only occur at that level. The 64-bit operating system kernel cannot be affected.

Since WOW64 runs in user mode, all 32-bit application code must also run in user mode. This explains why 32-bit kernel mode device drivers and applications that rely on them, will not work under Windows 64-bit.

The WOW64 emulator consists of the following DLLs, the only 64-bit DLLS that can be loaded into a 32-bit process:

Wow64.dll – the core emulation infrastructure and the links to the Ntoskrnl.exe entry-point functions.
Wow64Win.dll – the links to the Win32k.sys entry-point functions.
Wow64Cpu.dll – switches the processor from 32-bit to 64-bit mode.
Ntdll.dll – 64-bit version.

Wow64.dll loads the 32-bit version (x86) of Ntdll.dll and all necessary 32-bit DLLs which are mostly unmodified 32-bit binaries..However, some of these DLLs have been modified to behave differently on WOW64 than they do on 32-bit Windows. This is usually because they share memory with 64-bit system components.

WOW64 manages file and registry settings

In addition to handling operating system calls, the WOW64 interface needs to ensure that files and registry settings for 32-bit applications are kept apart from those for 64-bit applications. To achieve this two mechanisms are used, File and Registry Redirection and Key Reflection. Redirection maintains logical views of the data as if it were in 32-bit Windows and maps it to the correct physical location. Reflection ensures that 32-bit and 64-bit settings will be consistent where that is required.

File Redirection

File redirection ensures that there are separate folders for program and operating system files for 32- and 64-bit applications.

32-bit applications files are installed into

C:\Program Files(x86)

32-bit system files are installed into

C:\WINDOWS\SysWOW64

For 64-bit applications, files are installed to:

C:\Program Files
C:\WINDOWS\SYSTEM32

The WOW64 file redirector ensures that requests from 32-bit applications to open files in C:\Program Files or C:\WINDOWS\SYSTEM32 are redirected to the appropriate 32-bit directories.

There is one issue with file redirection that users and developers should be aware of.

Many 64 bit applications still use 32 bit installation routines. To ensure that an application is installed correctly, i.e. to C:\Program Files, the installation routine should make an operating system call to temporarily suspend the WOW64 file redirector. After installation another operating system call needs to be made to re-enable the redirector. If this approach isn't followed then the application will be installed to C:\Program Files (x86). A classic example of this is the 64 bit development version of Firefox 3.5, codenamed Shiretoko, which is installed to C:\Program Files(x86)\Shiretoko. Firefox still functions correctly, the only thing you can't do is change the icon for the application.

Registry Redirection

Registry keys specific to 32-bit applications are redirected from:

HKEY_LOCAL_MACHINE\Software

to:

HKEY_LOCAL_MACHINE\Software\WOW6432Node

You may also occasionally see Registry entries elsewhere although this is unusual

HKEY_CURRENT_USER\Software\WOW6432Node

This approach allows both the 32-bit and 64-bit versions of an application to be installed side-by-side without overwriting each other’s settings.

Registry reflection

Some redirected keys and/or values are also reflected. This means that if a 32-bit application makes a change to the redirected section of the registry, that change is also made to the 64 bit part of the registry, and vice-versa. Key reflection uses a policy of last writer wins. For example, if I install three applications with the same file extension then the last one to be installed will be associated with that extension.

  1. Install a 32-bit application that associates itself with the file extension XYZ.

  2. Install the 64-bit version of this application that associates itself with the file extension XYZ.

  3. Install another 3- bit application that associates itself with the file extension XYZ.

Double-clicking on a file with the extension XYZ in Explorer would load the application installed in step 3, as it was the last one to associate itself with this extension.

All of this is done transparently for 32-bit applications by WOW64, which, in intercepting calls to the operating system, detects references to file paths and registry keys and maps them accordingly.

WOW64 has several limitations

Some but not all 64-bit features are available to 32-bit applications

WOW64 provides 32-bit applications with access to some features of 62-bit systems. For example, applications can have more memory up to 4GB with the correct setting.. Other features are more limited due to overheads and restrictions. For example, 64-bit Windows will support logical 64 processors but 32-bit applications are restricted to the usual 32 logical processors.

Code Injection cannot mix between 32-bit and 64-bit

Under 64-bit Windows it is not possible to inject 32-bit code into a 64-bit process, nor is it possible to inject 64-bit code into a 32-bit process. Applications that rely on code injection to add functionality to existing applications will usually not work.

This explains why most 32-bit shell extensions do not work under Windows 64-bit. The majority of shell extensions rely on code injection to add themselves to Windows Explorer.

WOW64 does not support 16-bit installers

WOW64 provides support for Microsoft's 16-bit installer - by substituting a compatible 32-bit installer - but does not extend this support to third-party products.

 

Further options for running 32-bit applications with Windows 64-bit

Windows Virtual PC

Windows Virtual PC is free software that provides an environment that will support legacy hardware and software that will not work under Windows 7. Guest operating systems (OS) can run in a virtual machine which means they are not aware that they are running under another operating system.

The system requirements and features vary significantly between versions of Virtual PC and versions of Windows so check before you try Virtual PC. The latest version is, perhaps, the most limited with no support for operating systems before the current supported version of Windows XP which is Service Pack 3.

Windows XP Mode (XPM)

Windows XP Mode  is a specific implementation of Windows Virtual PC that comes with a pre-installed, licensed copy of Windows XP Professional with Service Pack 3. It is only available with the Enterprise, Ultimate and Professional editions of Windows 7 64-bit so you are expected to upgrade to these versions if you want it.

Many who have used XPM advise that it should be used as a last resort. It will provide legacy support if you have no other options but, compared to other virtualization products, performance is disappointing and the default configuration raises a number of security issues.

Dual boot Windows

You can install more than one version of Windows on the same computer by dual booting.For the purposes of this article, you would install a 32-bit version and a 64-bit version alongside each other. Each operating system is installed into its own disk partition and a boot manager is installed on the default partition to ensure that you can choose which operating system you want to use at startup.

Although you cannot use both operating systems at the same time it is a useful option because the entire computer is dedicated to the running operating system. Compared with virtual machines, there are no issues of compatibility and much less complexity in both installation and operation. You can also retain the ability to run 16-bit applications under the 32-bit version of Windows.

Summary

Most 32 bit applications will run quite happily under Windows 64. The main exceptions are:

  1. 32-bit device drivers.
  2. Applications that cannot function without the 32-bit device drivers that they use. Prime examples are antivirus, antimalware and firewall applications.
  3. Application extensions that rely on code injection into, for example, Explorer.

Some applications may work with reduced functionality. These include uninstallers, registry cleaners and tweaking programs, amongst others, since they only have access to that part of the Registry made visible to them by WOW64.

If you cannot run your 32-bit applications then consider virtualization or dual-booting with the old and new operating systems both installed.

 
Related Links
 
Editor

This software category is maintained by volunteer editor Remah.

  "I've used TechSupportAlert and the older Support Alert Newsletter for almost a decade so I have saved hundreds of hours of work and many more dollars by following Gizmo's Freeware recommendations. Thanks for the opportunity to give something back."  

If you have had a similar experience then you should consider becoming a reviewer too.

Tags

Windows on Windows 64, WOW64, 32 Applications under 64 bit Windows, 64 bit Windows Vista, 64 bit Windows 7, Windows Virtual PC, virtualization, dual boot, Securable

Back to the top of the article.

 

Share this
4.2043
Average: 4.2 (186 votes)
Your rating: None

Comments

by Caesar (not verified) on 28. May 2012 - 12:55  (94090)

Hi,
I have an existing windows Xp-32 bit server and i want to connect it with another server which is windows 7-64 bit. Will this things workout properly?
Please i need some advice on this matter..

Thanks!!

by Muskaan (not verified) on 21. May 2012 - 18:11  (93806)

i m using sony vaio 64 bit OS,,I am unable to run oracle related softwares on my computer...please help me out.

by pandey sumit (not verified) on 8. May 2012 - 6:21  (93199)

i am using windows7 64bit but when i install 32bit programs its show some error

by Ismael Cariño (not verified) on 29. February 2012 - 17:25  (89708)

Hello Remah,

And what about the server performans running a 32 bits application on a 64 bits server (W2k3)

Thanks in advance

by Remah on 1. March 2012 - 18:46  (89773)

The application may run faster or slower than on a 32-bit processor (http://support.microsoft.com/kb/896456). The server performance will be reduced compared with running an equivalent 64-bit application. WOW64 emulation is less efficient than native execution. Exactly how much impact that has on your server will depend on your specific configuration.

If you are running Itanium CPUs then I have not addressed that here. Pre-2006 Itanium processors had hardware support for 32-bit applications but performance was so bad Intel developed software emulation similar to WOW64, the IA-32 Execution Layer.

by tameshwar (not verified) on 13. January 2012 - 8:47  (87115)

I have 64 bit windows 7 laptop i am able to install a 32 bit java application but when try to open the launcher file it popup a message "unable to find jawaw please check if u have typed correct user name and password"

by Remah on 13. January 2012 - 9:01  (87116)

This is a tutorial about Windows 64-bit and comments should relate to that.

You have a problem with Java so either post your problem in our Freeware Forum or in a Java support forum elsewhere.

by ANAND (not verified) on 29. December 2011 - 10:22  (86167)

Iam having Laptop with WINDOWS7 OS & 64bit system. Iam Unable to install Shared Printer from the Network (i.e printer installed on 32 bit os windows 7 )

Please provide solution on priority basis how to install network shared printer from 32 to 64 bit os windows 7.

by Remah on 7. January 2012 - 6:10  (86744)

You will have to find a 64-bit printer driver for 64-bit Windows.

This is not a support forum so you will have to post your question in one of our support forums.

by ghostridermn1 (not verified) on 30. September 2011 - 22:21  (80663)

I'm using windows 7 now & for one machine i work with,after it was migrated recently from windows XP (32-bit) to windows 7 (64-bit) the 32-bit IE 8 stopped working. After more investigation i've found that the 32-bit IE 8 has stopped being able to work with https-secured sites mostly, although the IE 8 64-bit is fine. I've done the normal resetting of settings & SSL within the browser configurations to no effect. I've also done numerous poring over the registry within HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MICROSOFT\INTERNET_EXPLORER\ and then a great many of the listings within there, but still to no luck in spotting any difference between two different otherwise identical machines.
I've even ran a tool to reregister the compatibility dll's, but no luck yet for the 32-bit IE 8 to handle https sites, although it does work ok on the normal http sites like google & so on.
Ideas or suggestions or wisdom?
Thank you for your assistance.

by Remah on 23. November 2011 - 12:06  (83774)

For the record, you are better off asking questions like this in a dedicated support forum either on this site or one of the many.

by W R CLINE (not verified) on 22. August 2011 - 23:52  (78166)

Recently purchased Sony Viao 64 bit laptop, now software vendor says I should hire software professional to make new laptop immulate 32 bit for old DOS applications. Found your website about WOW64 but cannot find source of software or whether it is already installed but not operational. Who can help?

by Remah on 23. November 2011 - 12:04  (83773)

For the record.

If you have a 64-bit version of Windows installed then you have WOW64 which is for Windows applications. So it is not WOW64 that you need to run an old DOS application, it is the NT Virtual DOS Machine which is no longer available in 64-bit versions of Windows 64-bit.

So I presume that you were either advised to get a virtual machine (VM) setup, to get your 64-bit Windows downgraded to a 32-version, or to have your laptop setup to dual-boot both the 32-bit and 64-bit version of Windows.

Remah - New editor for this article

by MidnightCowboy on 23. August 2011 - 6:54  (78181)

The person who contributed this article is not active at present. Please post your query in our forum.

by Patricia Hurley (not verified) on 19. August 2011 - 15:32  (77958)

How do you know if you are operating in 32 or 64? I have recently downloaded some actions for photoshop and when I try to unzip the files I get an error, not a valid win32 application. Im assuming Im a 32 because of the error message.... how do I fix this? All help is GREATLY appreciated!!! Thanks!

by Michael Connor (not verified) on 19. August 2011 - 16:33  (77961)

You can check whether you have a 32 BIT or 64 BIT operating system by using this;

http://www.igorware.com/news/released-64bit-checker-110

Most 32 BIT applications will run on 64 BIT systems, but some will not. Also, if you have a 32 BIT version of a program ( like Photoshop, GIMP, and many others), they can not load 64 BIT add-ons, and also many 32 BIT add-ons will not run on 64 BIT versions.

This is purely program related. You need the right version of the add-on for the program. Usually add-ons are marked as to which version they will run on.

You can check which version of a program you have by using this software;

http://www.innovative-sol.com/uninstaller-free/

once you have installed it, start the "UNINSTALLER" and it will show you a list of your installed programs, marked as to whether they are 32 or 64 BIT;

Screen shot;

http://imageshack.us/photo/my-images/16/advunins.jpg/

There are other ways to do it, but this is quick and easy.

Regards....Mike Connor

by MidnightCowboy on 19. August 2011 - 16:09  (77960)

The person who contributed this article is not active at the moment. Please post your question in our forum.

by Grasul (not verified) on 30. July 2011 - 18:44  (76551)

Looks like I did a big mistake when I bought laptop with Windows 7!
Now I have to buy Dictionaries, verb conjugation software, CAD software and that means a lot of money!

by Allen (not verified) on 21. July 2011 - 21:06  (75989)

Thank you, this worked for me!

My client works with a suite of programs that were written in VB6, VB.NET 2003 and VB.NET 2005. They work perfectly in XP, Vista and Windows 7 (all 32-bit). But, we encountered a problem when trying to run the programs on 64-bit Windows 7.

The error message that we saw, was somewhat misleading:
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

After banging our heads on a few desks and verifying that we could see the database server, we came across your article. Long story short, the (32-bit) programs were looking for values in the registry but couldn't find them. One of the values it was looking for was the database driver type.

After migrating all of the registry settings from "HKEY_LOCAL_MACHINE\Software\(customer key)" to "HKEY_LOCAL_MACHINE\Software\WOW6432Node\(customer key)" everything worked like a charm!

Thanks again for the write-up!
Allen

by Betty-Mary Humbert (not verified) on 23. July 2011 - 16:37  (76112)

I don't know how to do this! Again thank you for assistance! Betty

by gopi nadh (not verified) on 14. July 2011 - 8:13  (75449)

my system is not inishalized window-7os ?
who to change the 32bit to 64bit in any operating system?

by kafabak (not verified) on 10. July 2011 - 12:31  (75130)

Dear, sir
I have windows 7 64 bit. and I want to install Ansys 12 32 bit, could you help me how can I do that please
regards

by Asim Mangat (not verified) on 23. June 2011 - 10:13  (74245)

hi h r u?
i m using window 7 in 64. i want to use an antivirus which is in 32 bit.
so can u plz help me in this matter as i hv to install antivirus urgent.
waiting for ur kind reply.
regards
asim mangat.

by skillerbeast (not verified) on 20. June 2011 - 11:02  (74027)

What should I do if I want to run an .exe file for 32 bits version? My current version is vista 64 bits. Downloading those dll and put it somewhere will solve my problem?

by Petty_comments (not verified) on 6. June 2011 - 8:55  (73343)

Great Article!
Thanks a lot ! A sad thing about other comments, though.
Going 64-bit within a week :)

by moni (not verified) on 5. June 2011 - 12:47  (73271)

im using vaio i3 processor i cant able to find personalization instead i check out in trouble shoot its show appearance and personalization aero theme is not fixed how can i solve this problem ..........

by Samir Sapre (not verified) on 26. May 2011 - 11:04  (72704)

I have purchase 64 Bit Sony laptop,but i want to install in that 32 bit application. is that possible for me. please advice me.

by Prash (not verified) on 11. May 2011 - 14:37  (71775)

Hiiiiii......i just want to know that i m using system32 bit can i install windows7 x64 in it....plz help me .....my email is

{Moderator's Comment: Email address removed. For your own privacy and security please do not post your email address on this site.}

by praneeth (not verified) on 19. April 2011 - 18:12  (70546)

hi i am praneeth from india i want to know how to open win7 32 bit files in win7 64 bit
amd i want to have the xp virtual instlation file

by kalister (not verified) on 19. April 2011 - 12:56  (70522)

Hello, I have a 64 bit computer with Windows Vista 64 and am unable to run most of my 32 bit programs. Calls to Windows and HP have proved unsuccessful. Even certain hardware is not compatible. Is there a way to make these run? I do not want to have to purchase new programs when what I have already runs perfectly on 2 other 32 bit computers. Any help would be greatly appreciated.
Thanks!

Post new comment

The content of this field is kept private and will not be shown publicly.
To prevent automated spam submissions leave this field empty.