Fix REGDB_E_IIDNOTREG (0X80040155) Fast — Interface Not Registered
This COM error means a required interface isn't in the registry. Here's the direct fix and why it happens.
Yeah, this one's annoying. You're in the middle of something—maybe compiling code, running a script, or starting an application—and boom: REGDB_E_IIDNOTREG (0X80040155). Interface not registered. Feels like hitting a wall for no good reason. I've seen this on Windows 10 and 11, mostly with Visual Studio tools, older COM components, or custom DLLs that didn't register properly during install.
The Direct Fix
Don't waste time hunting through the registry manually. The fix is straightforward: re-register the DLL or OCX that owns the interface. Here's the step-by-step:
- Open Command Prompt as Administrator. Right-click Start menu, select Command Prompt (Admin) or PowerShell (Admin).
- Find the problematic file. If you know the DLL name (the error often gives a hint—like
some.dllorsomething.ocx), great. If not, the error usually comes from a specific app. Had a client last month whose print server spat this error—turns out a custom print monitor DLL wasn't registered. - Run
regsvr32on it:
regsvr32 "C:\Path\To\Your.dll"
Yes, quotes around the path if there are spaces. Always. - If it succeeds, you'll see a popup saying the DLL registered. If it fails, you'll get a different error—usually a missing dependency or wrong architecture (32-bit vs 64-bit). Check that first.
- Restart the application or the whole machine. Sometimes the COM subsystem needs a fresh start.
When You Don't Know the DLL
If the error doesn't name the file, use a tool like ProcMon from Sysinternals. Filter for REGDB_E_IIDNOTREG or the process name. Capture a trace and look for CLSID lookups that fail. That CLSID will lead you to the unregistered DLL in the registry under HKEY_CLASSES_ROOT\CLSID. Note: you need admin rights to read those keys properly.
Why This Worked
The COM subsystem on Windows stores interface GUIDs (IIDs) in the registry under HKEY_CLASSES_ROOT\Interface. Each interface has a mapping to a proxy/stub DLL that marshals calls between processes. When a DLL installs, it registers its interfaces there. But if that registration gets wiped—by a bad uninstall, a system restore, or a registry cleaner gone rogue—the COM runtime can't find the interface, and you get 0x80040155.
regsvr32 calls the DLL's DllRegisterServer export, which writes the IID and CLSID entries back into the registry. That's the whole fix. Simple, but not obvious when you're staring at an error.
Less Common Variations
Sometimes the fix isn't a straightforward regsvr32. Here are real scenarios I've run into:
- 32-bit component on 64-bit Windows: If the DLL is 32-bit, you need to register it from a 32-bit command prompt. On 64-bit Windows, the default
regsvr32is 64-bit. Run%systemroot%\SysWOW64\regsvr32.exeinstead. Missed this once on a client's accounting software—cost me an hour. - Visual Studio Tools for Office: This error pops up with VSTO add-ins. The fix is to run
SOAPROXY.EXE /UNREGISTERthenSOAPROXY.EXE /REGISTERfrom the Office installation folder. Or re-run the VSTO installer. - Custom COM+ applications: If the interface is part of a COM+ package, re-register the whole package using
COMEXP.MSC(Component Services). Export the application, delete it, and re-import. - Antivirus interference: Had a case where an overzealous endpoint security tool blocked regsvr32 from writing to the registry. Temporarily disabled it, registered the DLL, re-enabled it. Worked.
Prevention
Once you've fixed it, here's how to avoid seeing it again:
- Don't use registry cleaners. They're a magnet for this kind of problem. Legitimate COM registrations get flagged as orphaned entries, and poof—your interface is gone.
- Use proper installers. If you're a developer, make sure your installer runs regsvr32 or uses
msiwith self-registration. Copying DLLs manually is asking for trouble. - Keep a restore point. Before making COM registry changes, create a system restore point. That way if something goes sideways, you can roll back in 10 minutes instead of chasing ghosts.
- Log your app's dependencies. When you deploy internal tools, document which DLLs need registering. I keep a simple
register.batscript in the install folder. Saves time on every redeploy.
This error is a pain, but it's a mechanical one. Know your DLL, run regsvr32 with the right bitness, and you're back in business. If it still fails, check the Event Viewer under Windows Logs > Application for more clues—the exact interface GUID is often logged there. Good luck.
Was this solution helpful?