Concurrent Remote Desktop (CRDP) for Windows 10
An update to this post (that covers the latest Windows 10 versions) is now available here.
You are checking the helpdesk and a new problem rolls in. You know the solution but you (the administrator) will need to login. You immediately remote into the machine only to see that the user is showing a presentation or actively using it.
Do you:
A) Call the user and have them log off so that you can start fixing the problem. The problem will get fixed but the user is interrupted for 20 minutes.
B) Wait until later in the day and hope the user isn’t using their computer. The problem will get fixed at the end of the day but the user had to deal with it all day.
C) Use RDP and log into the computer. The user is able to continue the presentation. You are able to fix the problem in the background. Everybody is happy!
The answer is C!
“That’s wrong!”, you say! “Client OSs can’t have concurrent RDP sessions. When you try, you get an ugly message and the current logged in user is logged out!”
If Server can, the client can! All we have to do is trick it! How? Let’s find out!
Starting off, I am going to make two assumptions. One – you are an administrator of these remote machines. Two – you can already RDP into these machines when no user is logged on. If you aren’t sure or haven’t configured these settings, see this article on where to locate these settings.
Next: Download the CRDP zip file. The script and files came from Mike Garcen and can be found here. Once downloaded, extract the contents into a folder within your local profile.
Third Step: Download SysInternal PSTools. Copy PSEXEC.EXE from the download and paste it in the CRDP folder (under your local profile).
Last step! Create a batch file in the root of your profile named CRDP.bat. Paste these three lines into it:
xcopy “%USERPROFILE%\CRDP\*” \\%1\C$\Windows\Temp\CRDP\ /y
“%USERPROFILE%\CRDP\psexec.exe” \\%1 C:\Windows\Temp\CRDP\install.cmd multi
mstsc /v:%1
That’s it! Now, you can press Windows Key + R. Then type CRDP COMPUTERNAME
XCOPY will copy over all of the files and PSXEC will execute the script. After it has finished, you will be asked to login with your administrative account. Just to show you how awesome this is, take a look at these screenshots.
A Standard User Logged On
An Administrator Logged on at the Same Time (Notice the Task Manager).
Zoomed in Task Manager Showing User Sessions:
Pretty awesome right! Now you can work on a computer at the same time as a standard user!! There are some caveats to this method. First, it currently only works on Windows 7. I’ve seen some Windows 8 methods but they are quite shady. Second, Microsoft released an update to patch Remote Desktop Connection. This update (2984972) broke this tool. You can remove this update by running wusa /uninstall /quiet /norestart /kb:2984972 . A big thanks to TenNine for researching that problem!
Concurrent Remote Desktop allows you (the administrator) to simultaneously use a client computer while a standard user is still interactively using it. For IT, this is huge! Imagine never having to kick a person off of their computer because you need to work on it. Concurrent Remote Desktop (CRDP) makes this possible. This guide will cover CRDP setup for Windows 10.
Back in the age of Windows 7, we published the first CRDP setup guide here. If you haven’t read it, do so now – it provides background information and some troubleshooting tips. For those of you that have already read it (or just don’t like prequels), let’s enable CRDP for Windows 10!
Step 1: Download and extract this ZIP file to a network location. Any IT employee who will be using CRDP will need Read/Execute to these files – computer accounts do not need permission to see these.
Step 2: Edit the CRDP.bat file. Change the \\Server\Share\CRDP\ path to your network location. Leave all of the other settings at their default values.
Step 3: Copy the CRDP.bat file to the root of your user profile. To launch a CRDP session, run CRDP ComputerName . This will launch the CRDP.bat file and target it to the remote machine name that you specified. It will then work its way through the install.cmd file to enable CRDP.
Caveats and Tips for Using Concurrent Remote Desktop
CRDP is dependent on the client OS that you are running. It works by modifying a few registry keys and replacing the termsrv.dll with one that doesn’t check for a logged on user. It will also enable the RDP firewall rule (if not enabled). You technically only need to run this once per machine but I find it easier to run it anytime that I am connecting to a remote computer.
There are a few things you need to know about CRDP though. First, this package only works on Windows 10 x64 installations. It will should work on any edition (that has RDP built in) and any update version. The important thing is that C:\Windows\System32\termsrv.dll is at version 10.0.10240.16384. Unless Microsoft patches this file in the future, your termsrv.dll should be this version.
Second, this script makes the assumption that you are an administrator on the local machine. If you aren’t, fix that now. Finally, don’t run this against your own machine. Because it allows multiple sessions for the same user, you would never be able to join your original session. If you do need to restore the termsrv.dll file, just delete the existing one and rename the termsrv.dll.old file to termsrv.dll.
In this guide, we configured CRDP for Windows 10 X64 installations. If you have any questions or thoughts, let me know in the comment section below.
The newest windows update broke the tool.
Very unhappy! Fall Creators update 1709 finally broke this particular patch. Since there is not a 1709 Windows Server 2016 GUI yet released (at least that’s what my research shows) there is probably no way to get this to work yet.
In the event viewer I get this message:
Faulting application name: svchost.exe_TermService, version: 10.0.16299.15, time stamp: 0x9c786b9a
Faulting module name: termsrv.dll, version: 10.0.10240.16384, time stamp: 0x559f42a3
Exception code: 0xc0000005
Fault offset: 0x000000000006a9a5
Faulting process id: 0x63f8
Faulting application start time: 0x01d34813199c6ee9
Faulting application path: C:\WINDOWS\System32\svchost.exe
Faulting module path: c:\windows\system32\termsrv.dll
Report Id: 9722d337-93e6-467e-acdc-08074198617f
Server 1709 is out now! You may see someone releasing a patch soon – if you do, let me know!
How to unpatch/restore default termsrv.dll?
Hi Joseph,
Doesn’t this break the EULA?
It may. This post should be considered a learning exercise on how RDP works and not as directions for use in a production environment.
Did the newest update break this tool? Test environment, of course.
It did break it. I did a system restore from 9/17/16 back to 9/6/16. Within that time frame something changed.
Does this work only for Windows 10 to Windows 10 or can you CRDP from Windows 10 to (insert windows OS here)?
Also, this site continues to be a treasure trove of IT excellence. Keep it up Joseph!
You can crdp from any Windows Vista + into a Windows 10 machine.
And thank you Robbie!
Hi Joseph. Two things. Firstly, does this work with 10586 version of Windows 10, ie Update 1511? Secondly, any chance of getting this to work on 32bit?
It is a dirty hack that replaces 2 files of the client OS with the respective server versions (termsrv.dll and rdpclip.exe). Since there is no 32 Bit server version anymore where we can get the files from – no chance to get it to work on 32 bit.
BTW: I’m almost absolutely sure that this hack is a license violation – but it’s up to the user (you) to verify and judge 🙂
1. Yes.
2. No (see Martin’s reply).
Joseph: Admin rights check is probably unreliable – I suggest the following:
whoami /groups | find “S-1-16-12288” && set HasAdminRights=1 || set HasAdminRights=0
S-1-16-12288 is the High Integritiy Label SID which is only present in sessions running as admin.
regards, Martin
Good tip Martin! Thanks for looking this over.
How does this compare with MSRA?
Remote Assistance allows you to share the screen/mouse/keyboard with an actively logged on user. CRDP allows you to start another user session on the computer without interrupting the logged on user. Let’s say a user asks you to uninstall a piece of software – you could launch a CRDP sessions – go to control panel – uninstall the program – and log off without the user even knowing.