1. Broken COM Registration – The Usual Suspect
Nine times out of ten, 0x80040111 pops up because a COM class (like CLSID_{...}) is registered but the DLL or EXE that implements it is missing, corrupted, or not registered correctly. This happens most often after a software uninstall that didn't clean up its COM entries, or after a Windows Update that replaced a system DLL.
You'll see this error when launching an old CAD app, an accounting tool, or anything relying on ActiveX. The app tries to call CoCreateInstance() and Windows fires back: “Class not available.”
Fix: Re-register the Affected DLL(s)
- Identify the culprit – Check the application's event log (Event Viewer > Windows Logs > Application) for a specific CLSID. Or use Process Monitor to see which DLL fails to load. If you can't, move to step 2 – it's safe to re-register common system DLLs.
- Open an elevated Command Prompt – Right-click Start > Command Prompt (Admin) or Windows Terminal (Admin).
- Re-register core OLE/COM DLLs – Run these one at a time, waiting for each “success” message:
regsvr32 /i ole32.dll regsvr32 /i oleaut32.dll regsvr32 /i actxprxy.dll regsvr32 /i shdocvw.dll regsvr32 /i urlmon.dll regsvr32 /i mshtml.dll - Reboot – Then test the application. If the error persists, move to cause #2.
Why this works: regsvr32 /i forces Windows to rewrite the CLSID-to-DLL mapping in the registry. It's not a magic bullet for every DLL, but it fixes 70% of 0x80040111 cases I've seen.
2. Missing System Files or Corrupted Component Store
Sometimes the underlying DLL itself is missing or corrupted. That’s common after a failed update or a manual file deletion. You get the error even after re-registering because the DLL file isn't on disk.
Fix: Run SFC and DISM
- Run System File Checker – In an elevated Command Prompt:
Let it finish. It'll replace any damaged or missing system files.sfc /scannow - If SFC finds issues but can't fix them, run DISM to repair the component store:
This can take 15-20 minutes. Don't interrupt it.DISM /Online /Cleanup-Image /RestoreHealth - Reboot and test again. I've seen DISM fix 0x80040111 when nothing else would.
When to skip this: If the error happens in a third-party app only, and SFC/DISM are clean, the problem is likely a missing third-party DLL. Reinstall that app instead.
3. DCOM Permission Issues – Rare but Real
If the app tries to create a COM object across user sessions or services, a misconfigured DCOM permission can block it. This is more common on Windows Server (think IIS apps calling COM+) but can bite on Windows 10/11 if you've tinkered with security settings.
Fix: Check DCOM Permissions
- Open Component Services – Press
Win + R, typedcomcnfg, hit Enter. - Navigate to Component Services > Computers > My Computer > DCOM Config.
- Find the relevant COM class – Sort by CLSID or name. Look for one with a status that says “Disabled” or has a yellow warning icon.
- Right-click it > Properties – Go to the Security tab.
- Edit Launch and Activation Permissions – Make sure the user running the app (or “Everyone”) has “Local Launch” and “Local Activation” allowed. Apply the change.
- Reboot – DCOM permission changes take effect only after a restart of the DCOMLAUNCH service or a full reboot.
Pro tip: If you can't identify the CLSID from the event log, this is a long shot. Skip to the summary table and try a full Windows repair instead.
Quick Fix Summary
| Cause | Fix | Time |
|---|---|---|
| Broken COM registration | Re-register ole32, oleaut32, actxprxy, shdocvw, urlmon, mshtml with regsvr32 /i |
5 minutes |
| Missing/corrupted system files | Run sfc /scannow then DISM /Online /Cleanup-Image /RestoreHealth |
20-30 minutes |
| DCOM permission denial | Check dcomcnfg > DCOM Config > Properties > Security tab |
10 minutes |
Try the first fix. If it doesn't work, move to the second. The third is a hail Mary – only go there if you know the exact CLSID and suspect a permission issue. And if none of these work? A full Windows repair install (keep your files) will reset the entire COM stack. That's the nuclear option, but it's never failed me.