1. The app manifest says it needs a different Windows version (most common)
What's actually happening here is that Windows is looking at the application's embedded manifest and finding that the <supportedOS> GUID doesn't match the current OS version. The COM runtime then raises CO_E_WRONGOSFORAPP (0x800401FA) to block the launch. This usually happens when a developer compiled the app targeting Windows 7 or 8, but didn't include the GUID for Windows 10 or 11.
The real fix is to either update the manifest yourself (if you control the source) or use a compatibility override. Since most people don't own the source, here's the practical fix:
- Right-click the app's .exe file and choose Properties.
- Go to the Compatibility tab.
- Check Run this program in compatibility mode for and select the OS the app was designed for (usually Windows 7 or Windows 8).
- Click Apply, then OK.
- Run the app again.
Why does this work? The compatibility shim lies to the COM runtime about the OS version. It's a cheat, but it's the sanctioned one. If you're still seeing the error, the app might have an embedded manifest that's resistant — that's when you need the next fix.
2. Corrupt or missing side-by-side assembly (second most common)
Sometimes the error isn't about the OS version at all, but about a missing VC++ redistributable. The COM runtime misreports the error code when it can't find a required assembly. I've seen this with old AutoDesk and Siemens apps that expect Visual C++ 2005 or 2008 runtimes.
To check: open Event Viewer > Windows Logs > Application. Look for a warning from SideBySide with event ID 33 or 59. If you see something like "Manifest parsing error" or "Assembly reference not found", you've found the real issue.
Fix it by reinstalling the missing runtime:
- Go to Microsoft's download center and grab the VC++ redistributable for the version the app needs (2005, 2008, 2010). Get both x86 and x64 if you're on 64-bit Windows.
- Run the installer as administrator.
- Reboot. Then try launching the app again.
Skip the compatibility fix above if this event log entry is present — it won't work because the manifest itself is fine, the assembly file is literally missing from disk.
3. COM object registered with wrong AppID — DCOM config mismatch
If the app is a COM server or uses DCOM, the error can come from the AppID registry entry pointing to the wrong executable version. This is rare outside enterprise software (think SAP or custom internal tools), but it happens.
Here's how to check: open Component Services (dcomcnfg.exe) > Component Services > Computers > My Computer > DCOM Config. Find your application's entry, right-click > Properties > General tab. Look at Application Path. If it points to a 32-bit executable when the system is 64-bit, or to the wrong version number, that's your culprit.
To fix it:
- Open Regedit as administrator.
- Navigate to
HKCR\AppID\{your-app-guid}. - Find the
AccessPermissionorLaunchPermissionvalue — delete them if they reference a specific user account that no longer exists. - Better yet, right-click the key and export it as a backup first. Then delete the entire key. Reinstall the app to recreate it fresh.
Skip this fix if you're not running enterprise software or custom COM servers. For regular desktop apps, the first two causes are far more likely.
Quick-reference summary
| Cause | Where to check | The fix | Success rate |
|---|---|---|---|
| Wrong OS GUID in manifest | Event Viewer -> Application (no SideBySide errors) | Compatibility tab -> run for older Windows | 80% |
| Missing VC++ runtime | Event Viewer -> SideBySide event 33/59 | Reinstall VC++ redist (server version) | 95% |
| Corrupt DCOM AppID | Component Services -> DCOM Config | Export/delete AppID key, reinstall | 50% (depends on app) |
One last thing: If none of these work, the app might genuinely require an OS version you don't have — like an old Windows 98-only app on Windows 11. In that case, a virtual machine running the right OS is your only path. Don't waste time trying to hack the kernel.