Understanding Application Directories
The most straightforward way to find 32-bit programs is by checking specific system folders. Windows separates 64-bit and 32-bit installations to prevent file conflicts. On a 64-bit version of Windows, 64-bit applications are stored in C:\Program Files, while 32-bit applications are redirected to C:\Program Files (x86). If your computer is running a 32-bit version of Windows, all applications reside in C:\Program Files.
Navigating to C:\Program Files (x86) provides an immediate list of every 32-bit application installed on your system. You can open File Explorer, paste this path into the address bar, and press Enter. Any folder inside represents a separate 32-bit program. This method is effective for visual inspection but does not reveal which specific files within those folders are 32-bit executables.
Using PowerShell for Detailed Identification
For a more comprehensive view, PowerShell offers commands that query the Windows Registry where installation data is stored. Open PowerShell as an administrator by right-clicking the Start button and selecting it from the menu. Run the following command to retrieve information about installed applications:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
This command targets the Wow6432Node registry key, which specifically houses entries for 32-bit applications on 64-bit systems. The output lists the display name, version, publisher, and install date. If you need to include 64-bit applications in the search, you must also query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall without the Wow6432Node segment. Combining both queries gives you a complete inventory of all software regardless of architecture.
Checking Executable Properties
Sometimes you may have a specific executable file and want to know if it is 32-bit or 64-bit. Right-click the application file, select Properties, and go to the Details tab. Look for the "File description" or check the file properties using a tool like file in WSL or third-party utilities. However, a more reliable native method is using the dumpbin tool from Visual Studio Command Prompt or checking the PE header.
If you do not have development tools installed, you can use PowerShell to check the machine type of a compiled executable. Run this script snippet against a specific file:
$file = Get-Item "C:\Path\To\App.exe"
$bytes = $file.OpenRead()
$bytes.Seek(0x3C, [System.IO.SeekOrigin]::Begin) | Out-Null
$peOffset = [BitConverter]::ToUInt32($bytes.ReadBytes(4), 0)
$bytes.Seek($peOffset + 4, [System.IO.SeekOrigin]::Begin) | Out-Null
$machine = [BitConverter]::ToUInt16($bytes.ReadBytes(2), 0)
if ($machine -eq 0x14c) { Write-Output "32-bit" } else { Write-Output "64-bit" }
This script reads the Portable Executable (PE) header directly. A machine value of 0x14c indicates an Intel 386 or later processor, which signifies a 32-bit binary. A value of 0x8664 indicates a 64-bit binary. This method works even if the application is not registered in the uninstall key.
Managing Legacy Software
Identifying 32-bit apps is often necessary when troubleshooting side-by-side configuration issues or ensuring compatibility with newer system updates. Some older plugins or drivers only support 32-bit environments. If you encounter errors related to missing DLLs or architectural mismatches, verifying the bitness of the involved components is the first diagnostic step. For users managing large fleets of machines, automating this detection via Group Policy or remote PowerShell sessions saves significant time.
Additionally, understanding your installed base helps in planning migrations. If you are moving to a strictly 64-bit environment, knowing which 32-bit dependencies exist allows you to replace them before they cause failures. This is particularly relevant for enterprise environments where standardization is key. You might also find that some 32-bit applications are no longer needed, allowing you to free up disk space and reduce the attack surface by removing unused legacy software.
Frequently Asked Questions
Why are my 32-bit apps in Program Files instead of x86?
If your operating system itself is 32-bit, all applications are installed in C:\Program Files because the system cannot run 64-bit code. You can verify your OS architecture by checking System Properties under Control Panel. Only 64-bit versions of Windows use the (x86) folder for redirection.
Can I convert a 32-bit application to 64-bit?
No, you cannot simply convert a compiled 32-bit executable to 64-bit. The binary structure is fundamentally different. You must obtain a 64-bit version of the software from the vendor or reinstall it if the developer provides a compatible update. Some modern installers automatically detect the OS and provide the correct architecture.
How do I fix side-by-side configuration errors?
These errors often occur when a 32-bit application looks for a 64-bit runtime library or vice versa. Ensure you have the correct version of the Microsoft Visual C++ Redistributable installed for both architectures. Reinstalling the redistributable packages usually resolves missing DLL conflicts associated with mixed-bit processes.
Is it safe to delete files from Program Files (x86)?
Do not manually delete folders from Program Files (x86) as this leaves orphaned registry entries and breaks the uninstaller. Always use the official uninstaller found in Settings > Apps or the control panel. Manual deletion can lead to instability and leftover junk files that consume resources without providing functionality.