SrcBits

Windows 10 (1903) Unresponsive After RDP Disconnect

There's a major bug in the current release of Windows 10 (1903). The latest iteration of Windows 10, which technically came out 5 months ago, recently became available to me as a Windows update. Since then I noticed I wasn't able to remote to my Windows 10 VM's until they were rebooted. It wasn't until I started digging that I realized it was happening after I disconnected from a previous RDP session. I was lucky enough to find others on the net who were affected by this issue and who have already posted a workaround. Since this bug not only prevents remote access to a Windows 10 machine, but also pegs the CPU to 100% until the machine or VM is rebooted, I felt it was important enough to warrant its own post.

Much thanks to the awesome people who posted in these Microsoft Answers and Reddit threads for spreading awareness to the problem and for providing the workaround.

Synopsis

What's the Problem?

The offending process that pegs the CPU to 100% is dwm.exe also known as the Desktop Windows Manager. Its basically responsible for rendering everything you view on your screen. When you disconnect from an RDP session while using WDDM, the default display driver for RDP sessions, dwm.exe goes cray cray and milks the CPU for everything its worth. Since the CPU is completely pegged, remoting to your machine is virtually impossible and your only recourse at that point is to reboot the machine. The workaround for this issue lies in a Group Policy that forces your RDP sessions to use a deprecated Windows display driver called XDDM.

The Workaround

I need to state before we get started that this workaround is only a temporary fix because of the use of an obsolete driver. Using an old driver for your RDP sessions could potentially cause other issues, but so far in my testing, I haven't experienced any. Nevertheless, here's hoping Microsoft gets off their butt and releases a hotfix as soon as possible.

Create a Group Policy

Start by launching the Group Policy Editor by hitting the Windows Key + R and typing gpedit.msc in the Run box. You can also type gpedit.msc directly into the Windows search bar at the bottom of your screen and click the first search result.

*NOTE: If you're worried this won't work on a standalone Windows 10 machine, don't. Even non-domain joined Windows machines can apply Group Policies locally.

With the Group Policy Editor open, expand the editor's directory tree until you locate the Use WDDM graphics display driver for Remote Desktop Connections group policy.

Local Computer Policy
 -> Computer Configuration
  -> Administrative Templates
   -> Windows Components
    -> Remote Desktop Service
     -> Remote Desktop Session Host
      -> Remote Session Environment
	   -> Use WDDM graphics display driver for Remote Desktop Connections

Double-click the WDDM group policy and disable it. Now close the Group Policy Editor and reboot your Windows 10 machine.

All that's left to do is RDP to the Windows 10 machine, then disconnect from the session. If you're able to RDP again without issue and the CPU usage is not constantly reading 100%, the fix worked.

Please Share Me, I'm Lonely