RPC_E_NOT_REGISTERED (0X80010103) fix for COM interface failures
This error fires when a COM component can't locate its registered interface. Almost always a permission or registration issue on the server side.
What triggers this error
You'll hit 0X80010103 most often when a script or application tries to instantiate a COM object, but the object's interface isn't properly registered. Classic scenario: you're running a PowerShell script that creates an Excel.Application object from a remote server, or a legacy VB6 app calls a COM component after a Windows Server 2019 update. The error text is always "The requested interface is not registered on the server object".
I've also seen this pop up with Outlook automation from a scheduled task on Windows 10, and with SharePoint's client object model when the user context doesn't have the right permissions.
Root cause in plain English
COM interfaces are like phone numbers for code. The client knows the number (the interface GUID), but when it tries to call, the server says "I don't have that number listed." Two reasons why:
- The COM component isn't registered — meaning its GUID-to-code mapping isn't in the registry.
- DCOM permissions block the call — even if it's registered, the security context (user account, service account) isn't allowed to launch or access the object.
On 64-bit Windows, a third cause is the bitness mismatch. A 32-bit COM object won't register its interface under the 64-bit registry path, so 64-bit clients can't find it. This catches people all the time.
Step-by-step fix
-
Check registration with oleview
Download OleView.exe from the Windows SDK (it's included with Visual Studio Build Tools). Run it as admin. Navigate toObject Classes -> All Objectsand find your COM component's CLSID. If you don't see it, the component isn't registered. Re-runregsvr32.exe yourcomponent.dllorregsvr32.exe yourcomponent.ocxfrom an elevated command prompt. -
Fix 64/32-bit mismatch
If you're calling a 32-bit COM object from a 64-bit process (or vice versa), use the 32-bit version of regsvr32 located inC:\Windows\SysWOW64\regsvr32.exe. Run that as admin. This registers the interface under the correct registry hive for your process architecture. -
Check DCOM permissions
Opendcomcnfg(Component Services). ExpandComponent Services -> Computers -> My Computer -> DCOM Config. Find your COM application (or search by CLSID). Right-click -> Properties.- Under Security tab, check Launch and Activation Permissions — set to Customize, then edit. Add the user account that runs the client process (e.g.,
NETWORK SERVICEor the specific service account) with Local Launch and Local Activation allowed. - Also check Access Permissions — same user needs Local Access allowed.
- Go back to the Identity tab. If the client runs as a different account (e.g., SYSTEM), set identity to The launching user or This user and specify a domain account that has the necessary privileges.
- Under Security tab, check Launch and Activation Permissions — set to Customize, then edit. Add the user account that runs the client process (e.g.,
-
Reboot or restart the COM service
After any registration changes, restart theDCOM Server Process Launcherservice (RPCSS) via services.msc — but only if you can afford a brief service interruption. A reboot is safer. -
Test with a minimal script
Don't use your production script yet. Write a simple test in PowerShell:$com = New-Object -ComObject Your.ComObjectName $com.SomeMethod()Run this in the same security context (same user account) as the failing operation. If this works but your app doesn't, it's a code issue, not COM registration.
Still failing? Check these
- Event logs — Look under
Windows Logs -> SystemforDCOMevents with error code 10016. That event tells you exactly which user and permissions are missing. - Antivirus interference — Some AV software blocks COM activation for unknown executables. Temporarily disable it to test.
- Windows updates — I've seen KB5021234 (Feb 2023) break DCOM on some Server 2022 builds. Uninstall the update if it coincides with your issue.
- Use Process Monitor — Filter by the failing process name. Look for
RegQueryValuecalls returningNAME NOT FOUNDunderHKCR\CLSID\{your-guid}. That's your smoking gun.
This error is nearly always fixable with the steps above. If you've tried all of them and it's still broken, the component itself might be corrupt — reinstall the application that provides the COM object.
Was this solution helpful?