Remote users can connect to their Windows 10 computers through the Remote Desktop Services (RDP) running on the Pro and Enterprise editions (but not on Home/Single Language). But there is a restriction on the number of simultaneous RDP sessions – only one remote user can work at a time. If you try to open a second RDP session, a warning appears asking you to disconnect the first user session.
Let’s consider the main restrictions of the Remote Desktop Service usage on Windows 10 (and all previous desktop Windows versions):
- RDP access feature supported only in higher Windows editions (Professional and Enterprise). In Windows 10 Home editions, the incoming remote desktop connections are forbidden at all (you can solve this only using the RDP Wrapper Library).
- Only one simultaneous RDP connection is supported. When you try to open a second RDP session, the user is prompted to close the existing connection.
- If there is a user who works on the console of the computer (locally), then when you try to create a new remote RDP connection, the console session will be terminated. A remote RDP session will be also forcibly terminated if the user will try to log locally.
Actually, the number of simultaneous RDP connections is limited rather by the license (then by any technical aspect). Therefore, this restriction does not allow to create a terminal RDP server based on the workstation that can be used by multiple users. Microsoft’s logic is simple: if you need a Remote Desktop server – buy a Windows Server license, RDS CALs, install and configure the Remote Desktop Session Host (RDSH) role.
From a technical point of view, any Windows version with a sufficient amount of RAM can support simultaneous operation of several dozens of remote users. On average, 150-200 MB of memory is required for one user session, without taking into account the launched apps. Those, the maximum number of simultaneous RDP sessions in theory is limited only by computer resources.
Let’s consider two ways on how to allow simultaneous RDP connections on Windows 10: using the RDP Wrapper application and by editing the termsrv.dll file.
As a result, you have to edit this file using Hex editor each time, which is quite tedious. Therefore, you can use the RDP Wrapper Library tool as the main way to deploy a free RDS server on Windows 10.
RDP Wrapper: Enable Multiple RDP Sessions on Windows 10
The RDP Wrapper Library project allows you to support multiple RDP sessions on Windows 10 without replacing the termsrv.dll file. This software serves as a layer between SCM (Service Control Manager) and the Remote Desktop Services. RDPWrap allows you to enable not only support for multiple simultaneous RDP connections, but also to enable the support of RDP Host on Windows 10 Home editions. RDP Wrapper does not make any changes to the termsrv.dll file, it’s just loading termsrv library with the changed parameters.
Thus, the RDPWrap will work even in case of termsrv.dll file update. It allows not to be afraid of Windows updates.
You can download RDP Wrapper from the GitHub repository: https://github.com/binarymaster/rdpwrap/releases (the latest available version of RDP Wrapper Library – v1.6.2). Based on the information on the developer page, all versions of Windows are supported. Windows 10 is supported up to the 1809 build (although , everything also works fine in Windows 110 1909, see the solution below).
The RDPWrap-v1.6.2.zip archive contains some files:
- RDPWinst.exe — an RDP Wrapper Library install/uninstall program;
- RDPConf.exe — an RDP Wrapper configuration utility;
- RDPCheck.exe — Local RDP Checker — an RDP check utility;
- install.bat, uninstall.bat, update.bat — batch files for installation, uninstallation and update of RDP Wrapper.
To install the RDPWrap, run the install.bat with the Administrator privileges. During the installation process, the utility accessing the GitHub site for the latest version of the ini file. To undo this, remove the -o flag in the install.bat file. The program will be installed in the C:\Program Files\RDP Wrapper directory.
When the installation is over, run the RDPConfig.exe. Make sure that all elements on the Diagnostics section are green.
Run the RDPCheck.exe and try to open a second RDP session (or connect several RDP sessions from remote computers). It worked out well! Now your Windows 10 allows two (and more) users to use different RDP sessions simultaneously.
The RDPWrap utility supports all Windows editions: Windows 7, Windows 8.1, and Windows 10. Thus, you can build your own terminal (RDS) server on any desktop instance of Windows.
Also interesting features of the RDP Wrapper are:
- The option Hide users on logon screen allows you to hide the list of users from the Windows Logon Screen;
- If you disable the Single session per user option, multiple simultaneous RDP sessions will be allowed under the same user account (the registry parameter fSingleSessionPerUser = 0 is set under the key HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser);
- RDP Port — you can change the Remote Desktop port number from 3389 to any other;
- In the Session Shadowing Mode section you can change the remote control (shadow) connection permissions to the Windows 10 RDP sessions.
RDP Wrapper not Working on Windows 10
Let’s consider what to do if you cannot use several RDP connections in Windows 10 even with the installed RDP Wrapper tool.
In my case, since there is no direct Internet access on the computer, the RDPWrap could not get the new version of the rdpwrap.ini file from GitHub with the settings for the latest Windows versions. Therefore, the RDConfig utility showed the status [not supported].
Download the rdpwrap.ini file from the developer’s page and place it in the installation folder (C:\Program Files\RDP Wrapper\rdpwrap.ini). Restart the TermService and make sure that the state [not supported] is changed to [fully supported].
If the RDP Wrapper utility doesn’t work properly after updating the rdpwrap.ini file, the problem can occur because of a new build of Windows 10 you are using. Try to download the new rdpwrap.ini for your Windows 10 version build from here https://github.com/fre4kyC0de/rdpwrap.
Also, if you have problems with RDPWrap, you can open the issue at https://github.com/stascorp/rdpwrap/issues. Here you can find the actual rdpwrap.ini file before updating it in the official repository.
To replace the rdpwrap.ini file:
- Stop the termservice:
get-service termservice | stop-service
- Replace the rdpwrap.ini file in the directory C:\Program Files\RDP Wrapper\;
- Restart your computer;
- Run the RDPConf.exe and make sure all statuses turn green.
If after installing security updates or upgrading the Windows 10 build, RDP Wrapper does not work correctly, check if the “Listener state: Not listening” is displayed in the Diagnostics section.
Try to update the C:\Program Files\RDP Wrapper\rdpwrap.ini file using the update.bat script (or manually) and reinstall the service:
It happens that when you try to establish a second RDP connection under a different user account, you see a warning:
In this case, you can use the Local Group Policy Editor (gpedit.msc) to enable the policy “Limit number of connections” under Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections section. Change its value to 999999.
Restart your computer to apply new policy settings.
Modifying Termsrv.dll File to Allow Multiple RDP Session
To remove the restriction on the number of concurrent RDP user connections in Windows 10 without using rdpwraper, you can replace the original termsrv.dll file. This is the library file used by the Remote Desktop Service. The file is located in C:\Windows\System32 directory.
Before you edit or replace the termsrv.dll file, it is advisable to create its backup copy. If necessary, this will help you to return to the original file version:
copy c:\Windows\System32\termsrv.dll termsrv.dll_backup
Before you edit the termsrv.dll file, you have to become its owner and give the Administrators group the full permissions to it. The easiest way to do this is from the command prompt. To change the file owner from TrustedInstaller to a local administrators group use the command:
takeown /F c:\Windows\System32\termsrv.dll /A
SUCCESS: The file (or folder): c:\Windows\System32\termsrv.dll now owned by the administrators group
Now grant the local administrators group Full Control permission on the termsrv.dll file:
icacls c:\Windows\System32\termsrv.dll /grant Administrators:F
processed file: c:\Windows\System32\termsrv.dll Successfully processed 1 files; Failed processing 0 files.
After that, stop the Remote Desktop service (TermService) from the services.msc console or from the command prompt:
Net stop TermService
Before moving on, you need to get your version (build number) of Windows 10. Open the PowerShell console and run the command:
Get-ComputerInfo | select WindowsProductName, WindowsVersion
Then open the termsrv.dll file using any HEX editor (for example, Tiny Hexer). Depending on your Windows 10 build, you need to find and replace the code according to the table below:
|Windows 10 build||Find the string||Replace with|
|Windows 10 x64 1909||39 81 3C 06 00 00 0F 84 5D 61 01 00||
B8 00 01 00 00 89 81 38 06 00 00 90
|Windows 10 x64 1903||39 81 3C 06 00 00 0F 84 5D 61 01 00|
|Windows 10 x64 1809||39 81 3C 06 00 00 0F 84 3B 2B 01 00
|Windows 10 x64 1803||8B 99 3C 06 00 00 8B B9 38 06 00 00
|Windows 10 x64 1709||39 81 3C 06 00 00 0F 84 B1 7D 02 00
For example, for Windows 10 x64 RTM (10240) with the termsrv.dll file version 10.0.10240.16384, you need to find the line:
39 81 3C 06 00 00 0F 84 73 42 02 00
and replace it with:
B8 00 01 00 00 89 81 38 06 00 00 90
Save the file and run the TermService.
Already patched termsrv.dll file for Windows 10 Pro x64 can be downloaded here: termsrv_for_windows_10_x64_10240.zip
If something went wrong and you experience some problems with the Remote Desktop service, stop the service and replace the modified termsrv.dll file with the original version:
copy termsrv.dll_backup c:\Windows\System32\termsrv.dll
The advantage of the method of enabling multiple RDP sessions in Windows 10 by replacing the termsrv.dll file is that antiviruses do not respond on it (unlike the RDPWrap, which is detected by many antiviruses as a Malware/HackTool/Trojan).
The main drawback is that you will have to manually edit the termsrv.dll file each time you upgrade the Windows 10 build (or when updating the version of the termsrv.dll file during the installation of monthly cumulative updates).