Quick Answer
Run the COM+ component registration as an administrator after ensuring the folder containing your DLL or TLB is writable, or use regsvr32 to manually register the type library before retrying.
What's Going On Here?
I've seen this error pop up in the most frustrating moments — usually right after you've built a new COM+ application or updated an existing one, and you're trying to register a component that includes a type library. The error's full message, COMADMIN_E_REGISTERTLB (0X80110430), means the COM+ system couldn't call RegisterTypeLib on the type library file you're pointing to. It's not a code bug — it's an environment problem.
Here's the typical trigger: you're on a Windows Server 2016 or 2019 box, you've copied a DLL and its accompanying .tlb file to C:\Program Files\YourApp\, then you try to add the component in Component Services. The registration fails with this exact hex code. Or maybe you're refreshing a component in an existing application after a patch. Either way, the root cause usually falls into one of two buckets: permissions (the COM+ service doesn't have rights to write to the type library's location or the registry) or the type library is already registered but stuck under a different version.
The key is that COM+ is trying to register the type library on your behalf, and it's failing silently. You need to take control and do it yourself. Let's fix it.
Fix Steps: How to Resolve This Error
- Close Component Services and reopen it as Administrator. Right-click the Component Services icon and select "Run as administrator." This handles the most common permission issue — the COM+ snap-in sometimes runs without elevated rights, and the registration API requires them.
- Check the file location. Ensure the DLL and TLB files are in a folder that both your user account and the system account (or the account running the COM+ application) can access. If they're in a user profile folder, move them to a shared location like
C:\Program Files\YourApp\orC:\Windows\SysWOW64\(if it's a 32-bit component on 64-bit Windows). - Manually register the type library. Open a Command Prompt as administrator and run:
thenregsvr32 /u yourcomponent.dll
This forces the DLL's own self-registration, which typically registers the type library it contains. If your component uses a standaloneregsvr32 yourcomponent.dll.tlbfile, useregtlibinstead:regtlib yourcomponent.tlb - Retry the COM+ registration. Go back to Component Services, right-click your component, and select "Add Component" or "Properties" to register it again. If it's already added, you might need to delete it and re-add it after the manual registration.
- If registration still fails, verify the type library is visible. Use OleView (part of the Windows SDK) to check whether the TLB appears under "Type Libraries." If not, you might need to force it with this command:
(Note: In newer Windows versions, regtlib might not exist — useecho regtlib "full path to your tlb"regsvr32 on the DLLinstead.)
Alternative Fixes If the Main Steps Don't Work
Sometimes the above isn't enough. Here's what to try next:
- Check the registry for orphaned entries. The error can happen when a previous registration left behind a broken key. Open Regedit and navigate to
HKEY_CLASSES_ROOT\TypeLib. Look for entries related to your component's GUID (you can find the LIBID in your source code or in the .tlb properties). If you find an orphaned entry with missing values, delete the entire GUID key, then re-register. - Reset COM+ permissions. If you're on a domain controller or a system with tightened security policies, the COM+ service might lack the "Impersonate a client after authentication" privilege. Open Local Security Policy, go to Local Policies > User Rights Assignment, and ensure the account running your COM+ application has this right. Then restart the COM+ system application service.
- Re-register the component using a different account. In Component Services, under the component's Properties, switch the Identity tab to "Interactive user" temporarily, then try the registration. If it succeeds, you've confirmed a permissions issue with the original account. Change back after testing.
- Use the 32-bit version of Component Services if you're on 64-bit. If your component is 32-bit, you need to use the 32-bit MMC snap-in. Open
%SystemRoot%\SysWOW64\comexp.mscinstead of the default one. I've lost count of how many times this fixed mysterious registration errors.
Prevention Tips
To avoid this headache in the future, adopt these habits:
- Always install components to a stable, system-wide path. Don't leave DLLs or TLBs in Downloads or temp folders — Windows Update or cleanup tools can remove them, breaking registration.
- Register type libraries during your build process. Add a post-build event in Visual Studio that runs
regsvr32orregtlibon the output. That way, you catch registration issues immediately, not when you're deploying to a server. - Document your manual steps. If you ever have to manually register the TLB, write it down in your deployment guide. This error tends to recur on fresh machines if you don't have a clear runbook.
- Test on a clean VM before production. This error often hides until you hit a locked-down environment. A quick test on a clean Windows Server VM (with default security settings) can reveal whether your component needs extra permissions.
You might also want to check the Windows Event Log for the specific error message from the COM+ service — it sometimes gives you the exact file path that's failing, which can point to a missing dependency rather than a permission issue. But in my experience, the manual registration route fixes 90% of these cases.