I know this error is infuriating — you double-click a program you've used a hundred times and Windows slams the door with a hex code that means nothing to a normal person.
Here's the short version: 0X000036C0 translates to ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED. The app you're launching has a manifest file that lists the exact runtime DLLs it needs (usually a specific Visual C++ redistributable or .NET version), and one of those pieces isn't on your machine. Windows won't fake it. It just refuses to start the app.
Get the exact missing dependency first
Don't guess. Windows tells you exactly what's missing if you ask it. Open Event Viewer (eventvwr.msc) and go to Windows Logs > Application. Look for a red SideBySide entry with source SideBySide right around the time you tried to launch the app.
You'll see something like this:
Activation context generation failed for "C:\Program Files\MyApp\myapp.exe".
Dependent Assembly Microsoft.VC90.CRT,processorArchitecture="x86",
publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found.
That block is your shopping list. In this example, the app needs the Visual C++ 2008 x86 runtime (VC90 = 2008). Copy the assembly name and version — you'll match it to a download in the next step.
If Event Viewer is empty
Run the app from an elevated command prompt to force the error to register:
cd "C:\Program Files\MyApp"
myapp.exe
Then refresh Event Viewer. If you still get nothing, enable SxS tracing with sxstrace.exe:
sxstrace Trace -logfile:sxs.etl
REM launch the failing app, then:
sxstrace Parse -logfile:sxs.etl -outfile:sxs.txt
Open sxs.txt. The last few lines name the assembly that couldn't load. That's your culprit.
Install the runtime it's asking for
Match the assembly name to a redistributable. Here's the cheat sheet — this trips people up constantly because the version numbers don't map cleanly to years:
| Manifest name | Download |
|---|---|
| Microsoft.VC80.CRT | Visual C++ 2005 Redistributable |
| Microsoft.VC90.CRT | Visual C++ 2008 Redistributable |
| Microsoft.VC100.CRT | Visual C++ 2010 Redistributable |
| Microsoft.VC140.CRT | Visual C++ 2015-2022 Redistributable |
| Microsoft.Windows.Common-Controls | OS component — run sfc /scannow |
| Microsoft.NET Framework | Install the .NET version from the manifest (4.8, 6, 8, etc.) |
Grab both x86 and x64 installers for the version you need. A 64-bit app can still load 32-bit dependencies, and vice versa. Installing only x64 is the single most common reason people come back with the same error an hour later.
Get them from Microsoft's official download center, not a random "runtime pack" site. Those bundles ship stubs that look installed but fail the manifest check.
Reboot, then launch the app. It should open.
Why that fixed it
Every modern Windows app carries a manifest — an XML blob embedded in the executable that says "I need these exact assembly versions." (This system is called Side-by-Side, or SxS, and it exists so two programs needing different versions of the same DLL can coexist without trampling each other.)
When you launch the app, the SxS loader reads the manifest, checks the WinSxS folder and the installed redistributables, and tries to bind the exact versions listed. If a version is missing, the loader bails with 0X000036C0 instead of falling back to a newer version. It's not a bug — Windows is protecting the app from loading a DLL it wasn't built against. Installing the redistributable drops the missing assembly into C:\Windows\WinSxS, and the loader finally has what it asked for.
Less common variations
Sometimes installing the redistributable doesn't clear the error. Here's what else to check.
A corrupt or half-installed runtime
If the redistributable shows in Programs and Features but the error persists, the install is broken. In an elevated prompt:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Then uninstall and reinstall the redistributable. A failed Windows Update that was interrupted mid-runtime-install is a classic cause of this.
A missing policy or activation context (rare)
On locked-down corporate machines, an AppLocker or Software Restriction Policy can block the SxS loader from reading the manifest. Check with your IT admin if the app works for everyone except you and your colleagues.
.NET version mismatch
If the manifest references a .NET version that's newer than what's installed, install that exact major version. .NET 4.x is backward-compatible within the 4 family, but .NET 5, 6, 8, and 9 are side-by-side with 4.x — you can't skip them. The manifest demands the version it wants.
Corrupt app manifest itself
Rare, but a bad download or antivirus tampering can corrupt the manifest inside the EXE. Reinstall the app from a fresh installer.
Prevention
Run Windows Update regularly — it silently ships Visual C++ and .NET updates that prevent most of these errors. When you uninstall old software, don't uninstall the Visual C++ redistributables it left behind. They're shared by dozens of other apps, and yanking one is the fastest way to break something unrelated three weeks later. If you're the one deploying software, bundle your runtime dependency with the installer instead of assuming the target machine has it.