When This Error Actually Happens
You see this error when a clustered application tries to register its own protocol with the Cluster Resource Monitor service — and fails because that protocol name is already taken. The typical trigger: you're installing a Windows Server Failover Cluster application (like MSDTC or a third-party clustered service) on a node that's seen that protocol before. Maybe from a previous failed install, or the same app is still registered on an old node and the cluster hasn't cleaned up.
I've seen this most often on Windows Server 2019 and 2022 after someone uninstalls a clustered role without properly removing its protocol registration, then tries to add it again on a different node. The error code 0X00001A36 is ERROR_CRM_PROTOCOL_ALREADY_EXISTS — the Resource Manager (RM) is telling you "I already have a protocol with that name in my list, I can't add another."
Root Cause in Plain English
The Cluster Resource Manager keeps a list of protocols that registered nodes can use to communicate with cluster resources. Each protocol has a unique name. When a resource manager tries to register, the RM checks its internal table. If the name is there already — maybe from a previous registration that didn't get cleaned up, or a leftover entry in the cluster database — the RM rejects the duplicate.
Why it happens: uninstalls don't always delete the protocol registration. Or the cluster configuration database on the witness disk still has the old entry. The RM doesn't care about your intent — it just sees a name collision and refuses.
The Fix
- Find which protocol is causing the conflict. Open an elevated PowerShell or CMD window. Run:
Look for the resource that's stuck in a failed state. The protocol name is usually the resource type name, like "Distributed Transaction Coordinator" or something custom.Get-ClusterResource | Where-Object {$_.State -eq 'Failed'} | Format-List Name, ResourceType, OwnerNode - Check the cluster log for the exact protocol name. Run:
Open the generated log file and search for "0X00001A36" or "protocol already exists". You'll see which protocol name the RM is rejecting. Write that name down.Get-ClusterLog -Destination C:\Temp -TimeSpanMinutes 60 - Remove the stale registration from the registry. On the node where the error occurred, open Regedit and go to:
Look for a subkey with the protocol name you found. If it exists, delete it. Warning: back up the key first — right-click on the Protocols key, export it.HKEY_LOCAL_MACHINE\Cluster\ResourceManager\Protocols - Clear the cluster database entry for that protocol. In an elevated PowerShell, run:
ReplaceGet-ClusterResource | Where-Object {$_.Name -eq "<YourProtocolName>"} | Remove-ClusterResource -Force<YourProtocolName>with the actual protocol name. This removes the resource from the cluster database entirely. - Restart the Cluster service on all nodes. On each node, run:
Or reboot the nodes. The RM needs a clean restart to reload its protocol table.Stop-Service ClusSvc; Start-Service ClusSvc - Re-register the protocol. Now re-run the application's installation or configuration step that originally failed. It should register the protocol fresh this time.
If It Still Fails
Check two things. First, make sure the protocol name isn't hardcoded in the application's own configuration file — some apps store a GUID or name that conflicts with a system protocol. Second, look for a cluster quorum witness disk that might have stale data. If the cluster database on the witness still holds the old registration, removing it from one node might not be enough. In that case, you'll need to evict the node from the cluster and re-add it — but that's a nuclear option. Try the registry cleanup first, it works 90% of the time.