Fix ERROR_ALREADY_REGISTERED (0X000004DA) on Windows Server
Error 0X000004DA means a service is already registered in the SCM database. The fix is usually restarting the service or tweaking the registry. Here's the real fix.
Quick answer
Restart the service from Services.msc or run net stop <service> && net start <service> from an elevated command prompt. If that fails, check for a stale entry in HKLM\SYSTEM\CurrentControlSet\Services and delete it.
What's happening here?
Error 0X000004DA – ERROR_ALREADY_REGISTERED – pops up when you try to start, stop, or install a service that Windows already knows about in the Service Control Manager (SCM) database. The SCM holds a list of every registered service, and this error means the service name or display name is a duplicate.
Most sysadmins see this after a botched service installation, an incomplete uninstall, or when a third-party app like an antivirus or backup agent tries to register a service that's still hanging around from a previous install. I've also seen it on Windows Server 2019 and 2022 after a cluster failover when a service doesn't clean up properly. The culprit is almost always a leftover registry key under HKLM\SYSTEM\CurrentControlSet\Services.
Fix steps
- Identify the service. Open an elevated command prompt (Run as Administrator). Run
sc query | find "SERVICE_NAME"to list all services. Alternatively, usesc query <service_name>to get specific status. - Restart the service. Execute:
net stop <service_name>net start <service_name>
This clears the registration state. If the service fails with "The service is not responding to the control function", move to step 3. - Check for duplicate service entries. Open Regedit and navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Look for the service name (not display name). If you see two keys with the same name, that's your problem. Delete the one that's not tied to the current installation. Export the key first as a backup. - Delete the service and reinstall. From elevated command prompt:
sc delete <service_name>
If it says "The specified service has been marked for deletion", reboot the server immediately. Then reinstall the service using the vendor's installer orsc create. - Force stop with Process Explorer. If the service process is hung, download Process Explorer from Microsoft Sysinternals. Find the service's PID (use
sc queryex <service_name>), right-click the PID in Process Explorer, and kill the process tree. Then runsc deleteagain.
Alternative fixes if the main one fails
Double-check the ImagePath value
A common cause is a corrupted ImagePath in the registry. Go to HKLM\SYSTEM\CurrentControlSet\Services\<service_name> and set ImagePath to the correct executable path. If the path contains spaces and you're not wrapping it in quotes, that'll trigger this error too. For example:"C:\Program Files\My App\myservice.exe" (with quotes) is correct.
Disable the service temporarily
If you can't delete or start the service, set its startup type to Disabled:sc config <service_name> start= disabled
Then reboot. After the reboot, try sc delete again. This works about 30% of the time when the service is in a weird intermediate state.
Use System Restore
Only if you're desperate. Revert to a restore point from before the service installation. Don't bother with System Restore if the error just started – it rarely helps here.
Prevention tip
Before installing any service-based software (like an agent, driver, or cluster-aware app), always check if a previous version is still registered. Run sc query <service_name> first. If it shows STATE: 1 STOPPED, uninstall the old version cleanly using the vendor's uninstaller, then reboot, then install the new version. If you're scripting installations, add a sc delete at the start of your script to nuke any stale entry. This saves you from chasing ghost registrations at 2 AM.
Was this solution helpful?