If you have ever attempted making multiple remote desktop connections concurrently to your Windows 10 machine, you must have observed that by default, Windows 10 doesn’t allow multiple RDP sessions. Only one user can be connected at any time.
Even if you have the Pro or Enterprise versions, trying to open a second RDP session results in the following message:
Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway?
Looks like this:
This article will show how to allow multiple RDP sessions in Windows DESPITE the default single user restriction. We will do this using the RDP Wrapper Library.
Before I proceed, here’s a summary of the basic restrictions associated with Windows RDP.
- RDP is only supported in Windows Professional and above. The feature is completely disabled in all Home editions.
- By default, only one remote RDP connection is possible at any time. Trying to create a second one prompts you to close the first one.
- If a user is working on the console of the local PC and you start a remote RDP session, the console session will get terminated automatically. Also if a user tries to login to the system console when there is an active RDP connection, the remote RDP connection will be forcibly terminated.
- On Windows 10 Home PCs, incoming RDP connections are completely forbidden. However, with the same RDP Wrapper Library discussed here, that problem can be solved as well.
Interestingly, from a purely technical perspective, Windows 10 can indeed support multiple remote desktop connections right out of the box. In fact, any Windows version has the built in capability to support dozens (or even hundreds) of concurrent users connected via RDP at the same time – as long as the machine has enough memory of course (about 150-200 MB of RAM is needed per RDP session on average).
The single RDP user limitation is related to licensing and nothing else. It has nothing to do with the actual technical capabilities of the Windows operating system. The only technical limitation in this regard would be memory availability.
In the light of the above, please note this disclaimer…
What Is The RDP Wrapper Library?
The RDP Wrapper Library is a utility that acts as a layer between the Service Control Manager (SCM) and Terminal Services to allow multiple RDP connections run concurrently. It also enables the remote RDP connection feature on PCs running Windows 10 Home (as mentioned above, this feature is disabled by default on all versions of Windows lower than Pro).
To get this library, download the zip file of the latest release of the RDP Wrapper Library from its Github page. As of this writing (April 4, 2019), the latest realease is v1.6.2.
For our purpose, we will work with the pre-built release contained in the zip file.
Note: You may need to temporarily turn off your anti-virus software to allow the download.
Your downloaded archive will contain the following files:
- RDPWinst.exe — the install/uninstall program (generally launched by the installer and uninstaller batch files below)
- RDPConf.exe — a configuration utility
- RDPCheck.exe — a local RDP checker (utility)
- install.bat, update.bat, and uninstall.bat — batch files for installing, updating, or uninstalling the program
Installing And Using The RDP Wrapper Library
Before installing RDP Wrapper, it is important to use the original (unpatched) version of the termsrv.dll file. If not, the RDP Wrapper Library may be unstable, or it may not even start at all. I point this out here because, some older methods of “hacking” Windows RDP to allow multiple concurrent sessions involved patching the termsrv.dll file.
To install the RDP Wrapper Library, run install.bat as an administrator. While installing the program, it attempts to access GitHub to get the latest version of the .ini file. If you want to disable this (you don’t really need to), just take off the -o flag in the install.bat file.
The program will be installed to the C:\Program Files\RDP Wrapper directory.
When you’re done with the installation, run RDPConfig.exe and make sure that all the items under the Diagnostics section are green.
If you removed the -o flag from the install.bat file during installation, or if you performed your installation without an Internet connection, you may notice that the Listener state is marked [not supported].
To fix this, download the rdpwrap.ini file from the its Github page and put it in the RDP Wrapper installation folder (C:\Program Files\RDP Wrapper). Restart RDP Wrapper and confirm that the previously [not supported] flag changes to [fully supported].
If you continue to get a [not supported] message, you may need to manually update your rdpwrap.ini file. How to do that is explained in the next sections.
The RDP Wrapper Library has some cool features:
- An option to Hide users on logon screen – You may not want the list of logged in users to be visible on the welcome screen. This option lets you hide them.
- Single session per user – If disabled, allows multiple concurrent RDP sessions under the same account.
- …and quite a few other features
Once, you have finished setting up the RDP Wrapper, go ahead and open an RDP session. While the session is still running, open another. If you carefully followed the instructions here, both sessions should run concurrently.
Updating The rdpwrap.ini File After Windows Update Breaks It
I wrote this section (and the sections below it) after originally publishing this article and later becoming aware of a recurring problem with the RDP Wrapper caused by Windows Updates. If everything explained above works for you, you can simply ignore the rest of this article. You’re done. But if you’re still having issues (e.g. still getting a [not supported] message), this is likely caused by your newer version of Windows. If that is the case, keep reading.
As pointed out by Alan in the comments section, a recent Windows 10 update broke some stuff. This isn’t a big deal and often happens when certain Windows updates get installed.
In the following section, I will explain why Windows updates may break the RDP Wrapper functionality from time to time. I will also provide detailed steps to help you fix the problem whenever it happens.
Why Does Windows Update Break RDP Wrapper?
The reason for this is that Microsoft often ships new Windows 10 builds with programming updates to the dynamic link library used by the remote desktop protocol itself (the termsrv.dll file). As hinted above, the use of the RDP Wrapper to enable multiple concurrent RDP user connections is kind of like a licensing grey area. And since RDP Wrapper is not in itself a Microsoft product, we cannot expect Microsoft to update it for us.
Thankfully, however, the RDP Wrapper library has an enthusiastic community of geeks who use and support it. Let’s defer to them.
Where To Find Fixes (Or Offsets) For The RDP Wrapper Windows Update Problem
Generally speaking, when Windows update breaks the RDP Wrapper library, what you need to do is to grab an updated version of the rdpwrap.ini file, and you’re again good to go.
Lots of people use the RDP Wrapper library. It has a large community of both users and “developers”. Some of these developers have created their own “offsets” or fixes to get around the various Windows update issues that break the RDP Wrapper library. These fixes are usually just offsets defined in custom rdpwrap.ini file replacements.
Unfortunately, it may not always be easy to find the right fix (or rdpwrap.ini) to make the RDP Wrapper library start working again. This is because, after Windows update breaks it, you have to wait for a fix to be created by the community, and then search through github and forum posts to locate the proper fix.
One good place to check is the git repo provided by fre4kyC0de. He seems to post update fixes and rdpwrap.ini offsets as soon as they become available.
Fixing The Problem
Step 1: In order to update the rdpwrap.ini file, you first need to stop the RDP service, otherwise you will get an “access denied” error or similar.
To stop the RDP service, launch command prompt as an administrator and execute the following command:
net stop termservice
Step 2: Make sure you have the latest RDP Wrapper library installed. Again, remember not to patch your termsrv.dll file or the RDP Wrapper simply won’t work, even if you update the rdpwrap.ini file. This is important to note because some RDP Wrapper forum users provide third party patches to the termsrv.dll file. However, using such a patch in conjunction with the new offsets will break the RDP Wrapper library.
Step 3: Now, you need to patch your rdpwrap.ini configuration file. You will find the file here: C:\Program Files\RDP Wrapper\rdpwrap.ini.
You can patch this file by completely replacing your current rdpwrap.ini file or by updating your existing one.
If you’re replacing the file: This version of rdpwrap.ini should work for Windows 10 Pro users up to 1809 – 10.0.17763.437. Just download the zip file, extract it, and then use the rdpwrap.ini file it contains to overwrite your current file located in C:\Program Files\RDP Wrapper\rdpwrap.ini.
If you would rather patch the file yourself: Refer to the git repository provided by fre4kyC0de, then search for his latest Windows 10 version. As I write this article update (May 29, 2019), his latest Windows 10 patch is currently 10.0.17134.706.txt and it works perfectly for Windows 10 17763.475.
Once you have the right file, open your existing rdpwrap.ini file using a text editor and append his offsets to the end of your file. Make sure you leave a space (blank line) at the end of your ini file. RDPwrap will not function properly if there is any text at the bottom of the ini file, it needs to end with a blank space.
Step 4: Restart the remote desktop protocol (term service) via an elevated command prompt:
net start termservice
Step 5: Now, rerun the RDPConf.exe application and confirm that the “Wrapper state” is Installed, the “Service state” is Running, the “Listener state” is Listening and directly to the right of that, it should say [fully supported]. All of these values should be in green.
After completing the above steps and confirming that everything is running, your machine is ready to accept multiple concurrent remote desktop user connections.