Fix COMADMIN_E_ROLEEXISTS (0X8011040C) – Role Already Exists
COM+ role creation fails because the role name already exists in the COM+ application. The fix is to delete the duplicate or rename it.
Quick answer: Open Component Services, find your COM+ application, expand Roles, and delete or rename the duplicate role. No need to reinstall anything.
This error happens when you try to create a COM+ role with a name that's already assigned to another role in the same COM+ application. The COM+ catalog enforces unique role names per application. I've seen this most often when someone re-runs a deployment script that tries to add roles without checking if they exist first, or when manually creating a role in Component Services and mistyping the name.
How to Fix It
- Open Component Services. Press Win + R, type
dcomcnfg, hit Enter. - Navigate to your application. Go to Component Services > Computers > My Computer > COM+ Applications. Find the application that threw the error.
- Check the Roles folder. Expand your application, then expand Roles. Look for the role name you're trying to create. It's already there.
- Delete or rename the duplicate.
- To delete: Right-click the role, choose Delete. Confirm.
- To rename: Right-click the role, choose Properties. Change the name in the Name field. Click OK.
- Create your new role. Right-click Roles, choose New > Role. Enter your desired name. Click OK.
Alternative Fixes
If the main fix doesn't work (e.g., you can't delete the role because it's in use or corrupted), try these:
- Restart the COM+ System Application service. Open Services.msc, find COM+ System Application, right-click, choose Restart. Then retry the role deletion.
- Export and reimport the COM+ application. Right-click your application, choose Export. Save as an MSI file. Then delete the entire application, right-click COM+ Applications, choose New > Application, and import the saved MSI. This rebuilds the role list from scratch.
- Check for hidden roles. Sometimes roles get orphaned. Use PowerShell to list all roles in the application:
ReplaceGet-WmiObject -Namespace root\CIMV2 -Class Win32_COMApplicationRole | Where-Object {$_.ApplicationID -eq "<YourAppGUID>"} | Select-Object Name<YourAppGUID>with the Application ID from the error or from the application properties. If you see the duplicate, you can delete it viaGet-WmiObject ... | Remove-WmiObject— but be careful.
Prevention Tip
Before creating roles in scripts or automation, always check if the role already exists. In PowerShell, wrap your role creation in a conditional:
$appName = "YourAppName"
$roleName = "YourRoleName"
$app = Get-WmiObject -Namespace root\CIMV2 -Class Win32_COMApplication | Where-Object {$_.Name -eq $appName}
$existingRole = Get-WmiObject -Namespace root\CIMV2 -Class Win32_COMApplicationRole | Where-Object {$_.ApplicationID -eq $app.ApplicationID -and $_.Name -eq $roleName}
if (-not $existingRole) {
# Create role
} else {
Write-Host "Role $roleName already exists — skipping."
}
Also, don't let deployment scripts blindly run role creation on every deploy. That's just asking for this error.
Was this solution helpful?