Fix COM+ synchronization error 0x8004E02E
COM+ component needs synchronization but isn't configured for it. This fix adds the required attribute to the component's registration.
Quick Answer
Open Component Services, find the failing COM+ application, right-click it, go to Properties, then the Activation tab, and set Synchronization to Required or Supported. Restart the application.
What's Happening Here
Error 0x8004E02E (or CO_E_NOSYNCHRONIZATION) shows up when a COM+ component—think of it as a small program that other programs use—tries to run but discovers it's not allowed to handle multiple calls at the same time in an orderly way. COM+ uses something called synchronization to keep threads from stepping on each other when they share data. If the component was built to require synchronization (maybe it uses apartment-threaded objects or has threading model set to Both with a requirement for synchronization), but the COM+ application it lives in doesn't have synchronization enabled, you get this error.
I've seen this most often after someone migrates an old COM+ application from Windows Server 2008 to a newer OS like Windows Server 2019 or 2022. The component itself hasn't changed, but the synchronization setting in the COM+ configuration gets reset or wasn't carried over. It can also happen when a developer registers a new COM+ component manually using regsvcs without setting the synchronization attribute in the assembly's ApplicationActivation or Synchronization attribute.
Step-by-Step Fix
These steps assume you're on Windows 10 or Windows Server 2016/2019/2022. The interface looks the same on all of them.
- Open Component Services. Press Win + R, type
dcomcnfg, and hit Enter. You'll see the Component Services window pop up. - Navigate to your COM+ application. In the left pane, expand Component Services > Computers > My Computer > COM+ Applications. You'll see a list of all installed COM+ applications.
- Find the failing application. Look for the application that contains the component throwing the error. If you don't know which one, check the error details in Event Viewer (Windows Logs > Application). The source will usually name the COM+ application.
- Right-click the application and select Properties.
- Go to the Activation tab. You'll see a section labeled Synchronization with a dropdown.
- Change the synchronization setting. In the dropdown, select Required (or Supported—Required is safer if you're not sure). Click Apply. You should see the window stays open and nothing obviously changes, but the setting is saved.
- Restart the application. Back in the COM+ Applications list, right-click on the same application and choose Shut Down. Then right-click it again and choose Start. If the application was already stopped, just right-click and Start.
- Test your fix. Run whatever process was failing before. The error should be gone.
If That Didn't Work
Sometimes the component itself isn't the problem—the whole COM+ application is misconfigured. Here are backup ideas:
- Check the component's threading model. In Component Services, drill into your COM+ application, open Components, right-click the specific component, select Properties, go to the Activation tab, and look at Threading Model. If it's set to Both, synchronization is usually required. If it's Apartment, synchronization might not be needed. Change it to Both if it's something else—but only if you know the component supports it.
- Re-register the component. Open an elevated Command Prompt (run as Administrator), navigate to the folder containing the component's DLL, and run
regsvcs [yourcomponent.dll]. This re-registers it with COM+. After that, go back to Component Services, restart the application, and test again. - Check for a missing application role. Rare, but I've seen a component fail with this error when the COM+ application's identity doesn't have the Impersonate privilege. Go to the application's Properties, Identity tab, and make sure the account you're using (usually Interactive User or a specific service account) has the Impersonate a client after authentication user right. You can set that via Local Security Policy > Local Policies > User Rights Assignment.
How to Stop This Coming Back
If you control the source code, add the [Synchronization(SynchronizationOption.Required)] attribute to the COM+ serviced component class in your C# or VB.NET code. That way, when you compile and register it, the setting sticks. For existing components, document the synchronization setting for each application in your environment. When you move a COM+ app to a new server, one of the first things you should do after registering it is open Component Services and verify the synchronization property hasn't been lost. A quick script can check this using COMAdmin.COMAdminCatalog in PowerShell—but that's a more advanced topic for another day.
Was this solution helpful?