0XC015001C

SXS manifest identity same but contents differ (0xC015001C) fix

Two identical manifest identities with different content. Usually a CRT merge conflict from an incomplete Visual C++ runtime install.

Quick answer (for the impatient)

Run sfc /scannow from an admin cmd, then reinstall all Visual C++ redistributables from Microsoft's official page. If still broken, delete the conflicting side-by-side assembly in C:\Windows\WinSxS\ using DISM.

What's actually happening here

This error — STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFER (0xC015001C) — means the Windows side-by-side (SxS) assembly cache found two manifest files that claim to be the same assembly (same name, public key token, architecture, and version) but their contents are different. Windows doesn't know which one to trust, so it bails on loading your application.

This typically happens after a botched Visual C++ redistributable install, a failed Windows update that partially updated a CRT assembly, or a third-party installer that dropped a modified manifest into WinSxS. I've seen it most with older apps that bundle their own CRT — like a 2012 game trying to load the 2010 runtime — and the system's copy doesn't match what the app expects.

The key point: this isn't a random corruption. It's a signature mismatch between two manifest files that should be byte-identical. Windows is doing exactly what it should — refusing to load an assembly it can't verify.

How to fix it

  1. Run System File Checker — Open an admin Command Prompt and run sfc /scannow. Let it finish and reboot. This often catches manifest mismatches caused by partial file corruption. If it finds and fixes files, test your app before moving on.
  2. Reinstall all Visual C++ redistributables — Go to Microsoft's VC++ page and download the latest x64 and x86 all-in-one package. Then manually grab each old version from 2005 through 2019. Install them in order from oldest to newest. The critical missing piece is usually the 2010 or 2012 runtime — those get trampled by other installers.
  3. Use DISM to cleanup the conflict — If step 2 doesn't fix it, we need to find the specific assembly. Run dism /online /get-currenteditions — doesn't help directly, but run this instead: dism /online /cleanup-image /restorehealth. Wait for it to finish. Then check Windows Update logs for any failed SxS-related updates.
  4. Manual manifest replacement — Last resort. Open an admin PowerShell and run Get-ChildItem -Path 'C:\Windows\WinSxS\' -Recurse -Filter '*.manifest' | Where-Object { $_.Length -gt 100000 } to find large manifests. Look for ones with duplicate names. Compare their hashes with Get-FileHash. Delete the offending file only if you're certain it's the wrong one — back it up first. I've had to do this once for a machine that got two different versions of Microsoft.VC80.CRT.manifest from different installer sources.

If the main fix doesn't work

Sometimes the problem is not in WinSxS at all — it's in the application's own folder. The app ships with a private manifest that conflicts with the global one. Check the app's install directory for any .manifest files. If you find one, rename it to .old and test. I've seen AutoCAD and older Adobe apps do this.

Another alternative: use Process Monitor (procmon) to filter for CreateFile operations on manifest file paths. Set a filter for Path contains .manifest and Result is NAME NOT FOUND. This will show you exactly which assembly Windows is struggling with. Then you can target that specific version for repair.

Preventing this from happening again

Don't let installers dump custom CRT files into WinSxS. That's the root cause 9 times out of 10. When you install a game or enterprise app that prompts to install VC++ redistributables, let it use the system version — never accept a bundled copy from 2010 if you already have 2015. If an installer insists on downgrading a CRT, cancel the install and find a standalone patch. The Windows SxS store is designed to handle multiple side-by-side versions, but only if each manifests declares a unique identity. When two installers write the same identity with different contents — that's when you get 0xC015001C.

One more thing: if you're deploying apps to multiple machines, run the official VC++ redistributable installer silently with /quiet /norestart during your build. Never script a manual copy of msvcr*.dll — that's what causes these identity collisions.

Related Errors in Windows Errors
0X0000085B 0X0000085B: Fixing NERR_BrowserNotStarted Server Service Error 0X000036E4 SXS XML Unclosed Tag Error 0X000036E4 Fix 0XC000020B STATUS_ADDRESS_CLOSED (0XC000020B) Fix – Transport Address Now Closed 0X000004FE Fix ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER (0x000004FE)

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.