You're working away, maybe in Outlook or a custom line-of-business app, and suddenly it throws 0x8001011E – RPC_E_NO_CONTEXT. The message says “No context is associated with this call.” That sounds cryptic, but I've seen this exact error dozens of times. It's almost never a hardware problem. It's a COM call that got made without the proper apartment state. Think of COM contexts as the room where your object lives. If a thread tries to knock on the door from outside the room, Windows slaps it with this error.
The fix isn't one-size-fits-all. Here are the three most common culprits I've run into, with the fix that actually works.
Cause #1: Outlook Add-ins that Don’t Respect COM Context
The most frequent trigger I see is an old or poorly written Outlook add-in. I had a client last month whose entire email flow stopped every afternoon. Every COM call to their calendar threw 0x8001011E. Turned out a shipping-cost add-in from 2015 was trying to make network calls from a background thread without marshaling back to the main context.
The fix is simple: disable the add-in and see if the error goes away. Here’s how:
- Open Outlook, go to File > Options > Add-ins.
- At the bottom, next to “Manage,” select COM Add-ins and click Go.
- Uncheck all add-ins, click OK, and restart Outlook.
If the error clears, re-enable add-ins one at a time until you find the troublemaker. I've seen this with Skype for Business, Zoom, and even some PDF tools. Once you find it, update it or ditch it.
Also, if you're using Office 365, sometimes the built-in add-ins like “Power BI” or “Bing Maps” cause this. Disable them too if you don't need them.
Cause #2: Windows Service or Scheduled Task Running Out of Context
The second most common scenario is a Windows service that calls a COM object incorrectly. I remember a client whose backup software would fail every night with 0x8001011E in the event log. The backup service was running a PowerShell script that tried to use a COM object (like a database client) but the service didn't have the right threading model.
The real fix here is to restart the service or the scheduled task, but to prevent recurrence, you need to adjust its execution context. If you control the service, make sure it's set to run under a proper user account, not “System” if the COM object isn't designed for that. But if you just need it working now, do this:
- Press Win + R, type
services.msc, and hit Enter. - Find the service that's failing (check the event log for the source).
- Right-click and choose Restart.
For scheduled tasks, use Task Scheduler, right-click the task, and select Run.
If the error persists, check the Microsoft Management Console (MMC) snap-ins. I've seen 0x8001011E when someone opens a custom MMC that uses COM objects. Restarting the console fixes it temporarily.
Cause #3: Registry Settings Broke the COM Context
Less common but happens more than you'd think: a registry tweak or a broken COM registration. For example, a previous install of an application might have left the ThreadingModel value incorrect for a COM class.
Don't go fishing in the registry blindly. That's a last resort. But if you've ruled out add-ins and services, this is the next stop. You'll need to find the specific COM component that's failing. Usually the error message in your application's log or event viewer will show a CLSID.
Once you have the CLSID (like {6BC096BD-0CE6-11D1-BAAE-00C04FC2E20D}), open Regedit and navigate to:
HKEY_CLASSES_ROOT\CLSID\{Your-CLSID}\InprocServer32
Check the ThreadingModel value. It should be “Both”, “Apartment”, or “Free” depending on the component. If it's missing or wrong, that's your problem. Set it to “Both” (most common) and restart.
But honestly, before you do that, try re-registering the DLL. Open an elevated command prompt and run:
regsvr32 /u yourdll.dll
Then re-register with:
regsvr32 yourdll.dll
That often resets the threading model correctly. I had a client with a custom inventory app that broke after a Windows update. Re-registering the COM component fixed it in two minutes.
Quick Reference Summary
| Cause | Symptom | Immediate Fix | Prevention |
|---|---|---|---|
| Outlook add-in | Error when using email or calendar features | Disable all add-ins via File > Options > Add-ins | Update or remove problematic add-in |
| Service or scheduled task | Error in event log, app fails at scheduled time | Restart the service or run the task manually | Adjust service account or rewrite script to marshal COM calls |
| Registry/COM registration | Error with third-party app after update or install | Re-register the DLL with regsvr32 | Check ThreadingModel is “Both” for in-process components |
In most cases, you won't need to touch the registry. Start with the add-in check, then look at services. If you're still stuck, search the event log for the exact CLSID and then decide. That'll point you straight to the culprit.
One last thing—if you're a developer and getting this in your own COM code, the real fix is to make sure your threads are initialized with CoInitializeEx and that you're calling COM objects from the same apartment. That's a whole 'nother article, but it's the root cause behind most instances of 0x8001011E.