What triggers this error
You'll see 0XC0000359 (STATUS_INVALID_IMAGE_WIN_32) when you double-click a 32-bit .exe on a 64-bit Windows installation that's running without WoW64 (Windows 32-bit on Windows 64-bit) enabled. The most common real-world case: you're on Windows Server Core or a custom Nano deployment that stripped out the WoW64 subsystem, and you try to run an old installer or tool compiled for x86. Another trigger: the executable itself has a corrupt or mismatched PE header — maybe someone hex-edited it, or it was built for a different subsystem (like POSIX or native) but is being loaded as a Win32 image.
The OS loader sees the file's PE header, reads the IMAGE_FILE_HEADER.Machine field, finds IMAGE_FILE_MACHINE_I386 (0x14c), and then checks if a 32-bit environment exists. If WoW64 isn't installed, the loader refuses to run it and throws 0xC0000359.
Root cause in plain English
The Windows executable format (PE) has a field that says "I'm a 32-bit Windows app." When a 64-bit Windows boots, it normally includes a compatibility layer called WoW64 that translates 32-bit system calls to 64-bit ones. Without that layer, a 64-bit kernel can't load a 32-bit binary at all — it's like trying to plug a European plug into a US socket without an adapter. The error code literally means "this image file didn't have the correct format" — but that doesn't mean the file is corrupt in the usual sense. It means the format (32-bit) can't be processed by the current loader environment.
Step-by-step fix
Step 1: Check if WoW64 is actually present
Open a command prompt (as admin) and run:
dism /online /get-features /format:table | findstr "WoW64"
If you see Enabled next to ServerCore-WoW64, WoW64 is there — skip to Step 3. If it's missing, the fix is to add it. On Server Core (Windows Server 2016/2019/2022), run:
Install-WindowsFeature ServerCore-WoW64
Or via DISM:
dism /online /enable-feature /featurename:ServerCore-WoW64 /all
Reboot after this.
Step 2: Verify the binary's bitness
Use Sigcheck from Sysinternals or dumpbin from Visual Studio tools:
sigcheck.exe yourfile.exe
Look for the line Image type:. If it says 32-bit and you're on a 64-bit system without WoW64, that's the problem. If it says 64-bit but you're running a 32-bit OS, you need a different binary. If it says Any CPU but the actual PE machine type is x86, same issue.
You can also check with PowerShell:
(Get-Item "yourfile.exe").VersionInfo.FileVersion
That won't tell you the bitness directly, but you can parse the PE header with a script. For a quick manual check, open the file in a hex editor and look at offset 0x3C for the PE signature offset, then check bytes at that offset + 4 (machine type: 0x14c = x86, 0x8664 = x64).
Step 3: If WoW64 is present but error persists, the PE header is corrupt
This is rarer but happens with partially downloaded files or bad disk sectors. Re-download the original executable from a trusted source. If it's a self-built binary, recompile it with the correct subsystem setting (usually /SUBSYSTEM:WINDOWS for GUI, /SUBSYSTEM:CONSOLE for CLI).
If the file came from a CD or network share, copy it to a local NTFS drive and try again — sometimes Windows rejects files from non-NTFS volumes due to alternate data stream issues that don't actually change the PE header but confuse the loader.
Step 4: Check for compatibility shims or AppLocker policies
Run this command to see if any shim database is interfering:
sfc /scannow
Then check AppLocker or Software Restriction Policies via secpol.msc. A policy that blocks 32-bit executables will surface as 0xC0000359 even if WoW64 is fine. Look under Application Control Policies → AppLocker → Executable Rules. If you see a rule denying %SYSTEM32%\*.exe or specific paths, disable or modify it.
What to check if it still fails
If you've verified WoW64 is installed, the binary is genuinely 32-bit, and no policies block it, you might be dealing with a corrupted OS loader component. Run DISM /Online /Cleanup-Image /RestoreHealth followed by sfc /scannow. If that doesn't help, check the Windows event log under Windows Logs → Application for event ID 1000 or 1001 from Application Error or Windows Error Reporting. The details often reference ntdll.dll or wow64.dll as the faulting module — that confirms WoW64 loaded but something inside the binary is wrong.
One last thing: some old 32-bit installers (like from the Windows 95 era) use a DOS stub that confuses modern Windows. Rename the file to .com and run it from a command prompt — that bypasses some header validation on certain Windows 10 builds (yes, it's a weird edge case, but it works).