Even though Remote Desktop shows as Enabled on the local server, several other conditions must be correct before RDP connections succeed. Use the following checks in order:
- Confirm RDP is actually enabled in the registry
- On the server, open Registry Editor and go to:
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
-
- Verify the fDenyTSConnections value:
-
0= RDP enabled -
1= RDP disabled
-
- If it is
1, change it to0.
- Verify the RDP services are running On the server, open Services and confirm these services are Running:
- Remote Desktop Services (TermService)
- Remote Desktop Services UserMode Port Redirector (UmRdpService) Start them if they are stopped.
- Check that the RDP listener and port are correct
- In Registry Editor, go to:
-
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
-
- Confirm PortNumber is
0x00000d3d (3389). - If a different port is configured, connect using
servername:port.
- Test local RDP and listener behavior
- On the server console, run mstsc and connect to localhost.
- If this fails, the problem is on the server (RDP listener/configuration).
- If this works, the problem is likely network/firewall.
- Verify firewall rules for RDP On the server, open wf.msc and check Inbound Rules:
- Ensure Remote Desktop - User Mode (TCP-In) and Remote Desktop - User Mode (UDP-In) are Enabled for all profiles.
- Or in elevated PowerShell:
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Set-NetFirewallRule -Enabled True
If still failing, temporarily disable the firewall to test:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
(Enable it again after testing.)
- Test network connectivity to port 3389 from another machine From a machine in the same network, run in elevated PowerShell:
Test-NetConnection -ComputerName <server-name-or-ip> -Port 3389 -InformationLevel Detailed
- If
TcpTestSucceeded = False, there is a network or firewall/NSG issue between client and server. - If
True, focus on server configuration (steps 1–4 and 7–8).
- Check for another process using port 3389 On the server, run:
tasklist /svc | findstr TermService
netstat -anob | findstr 3389
- Confirm the PID for TermService matches the process listening on port 3389.
- If another process is using 3389, stop that process and restart Remote Desktop Services.
- Validate RDP certificate and roles
- In MMC → Certificates (Computer account) → Remote Desktop, delete the RDP self-signed certificate and restart Remote Desktop Services so it is recreated.
- In Server Manager → Manage → Remove Roles and Features, check Remote Desktop Services roles. Remove unnecessary RDS roles (for example, Connection Broker) if this is not an RDS deployment, then restart the server.
If all these checks pass and RDP still fails, collect logs and contact Microsoft Support as indicated in the documentation.
References: