Windows 64-bit: The 'Program Files (x86)' and 'SysWOW64' folders explained

68 篇文章 0 订阅
2 篇文章 0 订阅
Windows 64-bit:

The 'Program Files (x86)' and 'SysWOW64' folders explained



If you use a 64-bit computer with a 64-bit Windows installed (for example the 64-bit version of Windows 7) you have probably discovered that there are two new folders with the names Program Files (x86) and SysWOW64 on the harddisk, that do not exists on a 32-bit Windows. Maybe you have wondered what these folders are, why they exists and what kind of files they contain? In this article we will explain these folders and also explain why it is important to place with files with a specific bitness (32 or 64 bit) in the right folder on the harddisk.


32-bit versus 64-bit computers and Windows
 
Since the mid-90s almost all computers that have been sold have been 32-bit computers, and mostly they have had a 32-bit Windows installed. But after the release of Windows 7, the sales of 64-bit computers with a 64-bit Windows installed have increased a lot. In the coming years, more and more people will have a 64-bit computer with a 64-bit Windows in their home or office. One reason to this is that the price of a 64-bit computer have decreased so much that they are almost as cheap as 32-bit computers. And people will prefer 64-bit computers over 32-bit computers because they can handle much more (RAM) memory.
 
A 32-bit computer with a 32-bit Windows installed can use a maximum of 3 to 4 GB (RAM) memory. Mostly around 3 GB because a large part of the address space is used by video cards and other devices such as network cards, sound cards etc. This is true even if you install 4 GB in the computer. Mostly only around 3 GB RAM will still be used. With 64-bit computers and 64-bit Windows things are different. A 64-bit computer with a 64-bit Windows can handle so much RAM memory as 192 GB!


On a 64-bit Windows, both 32-bit and 64-bit programs can be run
 
Both 32-bit and 64-bit programs can be run on a 64-bit Windows. When a 32-bit program is run on a 64-bit Windows, a 32-bit emulator will be invoked to handle the 32-bit program.
The emulator will make the 32-bit application to think it is running on a 32-bit Windows and the same functionality that is accessible on a 32-bit Windows will also be accessible for the program on the 64-bit Windows. Normally it will be hard for the program to know if it is running on a 32-bit or 64-bit system, but if the program really needs to know the difference there are API functions available that the program can call if needed. 
Exceptions: Antivirus programs etc
There are a few exceptions from this. 32-bit programs that function at low level, such as antivirus programs, will not always work on a 64-bit Windows; then a 64-bit version of the program must be used.


During the installation, it is important to install files into correct folders
 
As mentioned above the 32-bit emulator handles the situations when 32-bit programs are run on a 64-bit Windows and normally this works fine. But one sensitive phase is the installation of the 32-bit program. There exists special folders on the harddisk that is intended for 32-bit binary files only and it is very important that the installation program installs the 32-bit binary files to these folders. Some folders on the harddisk are intended for 32-bit binary files only and other folders are intended for 64-bit binary files only. If you place binary file with a specific bitness (32/64 bit) in a folder intended for another bitness the program will probably fail to work properly; in many cases the program will not even start.
 
Examples of binary files that is mentioned in this article are EXE files (program files), DLL files and OCX files (ActiveX components). Data files can usually placed in same folders and shared by both a 32 and 64 bit application.


T wo different versions of the Program Files folder and the Windows System folder
 
A 64-bit Windows has two different versions of the program files folder and the Windows system folder (system directory). One version is intended for 32-bit files and other version is intended for 64-bit files. The name of these folders, and the bitness they are intended for, is shown in the table below:
  
Folder nameBitnessDescription
System3264Windows System folder (system directory) for 64-bit files
SysWOW6432Windows System folder (system directory) for 32-bit files
Program Files64Folder for 64-bit program files
Program Files (x86)32Folder for 32-bit program files
 
Below you can see the full path to the folders.
 
Folder nameFolder pathDescription
System32C:\Windows\System32Windows System folder (system directory) for 64-bit files
SysWOW64C:\Windows\SysWOW64Windows System folder (system directory) for 32-bit files
Program FilesC:\Program FilesFolder for 64-bit program files
Program Files (x86)C:\Program Files (x86)Folder for 32-bit program files


The 'System32' folder is for 64-bit files and the 'SysWOW64' folder is for 32-bit files
 
This can be somewhat confusing, but the System32 folder is intended for 64-bit files and the SysWOW64 folder is intended for 32-bit files. This may seem a bit illogical if you look at the folder names, but there is an explanation to this. It has to do with compatibility. Many developers have hard coded the system folder path name in their applications source code and to preserve compatibility, if the application is converted to 64-bit code, the 64-bit system folder is still named System32.
 
But what about 32-bit applications that have the system path hard coded and is running in a 64-bit Windows? How can they find the new SysWOW64 folder without changes in the program code, you might think. The answer is that the emulator redirects calls to System32 folder to the SysWOW64 folder transparently so even if the folder is hard coded to the System32 folder (like C:\Windows\System32), the emulator will make sure that the SysWOW64 folder is used instead. So same source code, that uses the System32 folder, can be compiled to both 32-bit and 64-bit program code without any changes.
 
So remember:
 
the SysWOW64 folder is intended for 32-bit files only
the System32 folder is intended for 64-bit files only
 
It is very important that a binary file compiled to a specific bitness (32 or 64) is installed to the correct system folder. Otherwise the program that needs the file will not be able to load the file and will probably not work as expected.


The 'Program Files' and 'Program Files (x86)' folders
 
If you have a 64-bit Windows installed on your computer you have probably already noticed that there exists two folders for program files: the Program Files folder and the Program Files (x86) folder. The Program Files folder is intended for 64-bit programs and the Program Files (x86) folder is intended for 32-bit programs.
 
In many cases the program will start and run as expected even if you place the program in wrong folder, but if the program asks Windows for the path to the Program Files folder and want to access installed files in the folder, the wrong folder will be used and the program will likely fail to function. So to be sure that everything always works as expected, you should always install files with a specific bitness to the correct Program Files folder. So on a 64-bit computer with a 64-bit Windows, remember this:
 
always install a 32-bit program into the Program Files (x86) folder
always install a 64-bit program into the Program Files folder
 
 
'WOW64' and 'x86', what do they mean?
 
SysWOW64 and Program Files (x86) are special folders that only exists on 64-bit Windows and they are intended to store 32-bit binary files. In the folder names there are the "strange" character combinations WOW64 and x86 included. These character combinations have a meaning and we will explain it below:
 
WOW64 is a shortening for ”Windows on Windows 64-bit” (can be read as "Windows 32-bit on Windows 64-bit"). It's a emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows. A compatibility layer is used as an interface between the 32-bit program and the 64-bit operating system.
 
x86 is the name of a processor architecture from Intel that handles 32 bit instruction sets. The x86 term have been used for a very long time and in the beginning it was used as a general term to refer to Intel 16/32 bit processors with names such 8086, 80186, 80286, 80386 etc. But since the release of the 80386 processor, the first real 32 bit processor, the term x86 have been used to refer to 32-bit processors that have an instruction set that is compatible with the old 80386 processor.
 


More information
 
If you want to have more information about the different versions of the Program Files and System folder, and have a general overview of the WOW64 technology, you should read this document from Microsoft:
 
Best Practices for WOW64


Related products:
SamLogic Visual Installer

Other articles
More articles are available from the article index page.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值