In Windows 8 and 8.1, like in previous Microsoft client OS versions, only one simultaneous incoming RDP connection is supported. It means that only one user (one session) can simultaneously connect to a Windows computer using the Remote Desktop. In most cases it is enough, but sometimes it would be useful if multiple remote users could work simultaneously in their own sessions. A good example is when a computer is used as a Media Center, when video is played in the system console session and you need simultaneously to work remotely with the system without interrupting the video on TV.
When you trying to start the second RDP session to a computer with Windows 8.1 / 8, a message appears that another user is already signed in locally and this session should be closed.
For example, in the server versions of Windows two simultaneous concurrent administrative connections with the individual sessions are supported (in case of the terminal RDS server this number may be even higher).
Nevertheless, you can find a special patch in the web that allows to ignore this restriction. Due to this patch, multiple users can simultaneously connect to Windows 8 / Windows 8.1 computer over RDP.
So, the patch replaces the original system file %SystemRoot%\System32\termsrv.dll (a library used by Remote Desktop Services).
Here are the links to the modified library versions:
- Windows 8 – windows8-termsrv.dll.zip
- Windows 8.1 — windows8.1-termsrv.dll.zip
Before you replace the library, back up original termsrv.dll using the command:
copy c:\Windows\System32\termsrv.dll termsrv.dll_old
Now, if something goes wrong, you can always roll back to the original configuration by replacing the current file with the original termsrv.dll_old.
Download the archive with the patched termsrv library for your Windows version.
In Windows 8 at first you have to change the values of the following keys in HKLM\System\CurrentControlSet\Control\Terminal Server\:
- fDenyTSConnections (DWORD) — 0 (the key allows to enable RDP on your computer)
- fSingleSessionPerUser (DWORD) — 0
The same operation can be performed from the command prompt:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
Then go to C:\Windows\System32, find the file termsrv.dll and open its properties.
By default, the owner of this file is TrustedInstaller and even the administrator doesn’t have any right to replace it.
Go to the Security tab and click Edit button. In the access list, find the local administrators group and give it full control over this file and save the changes.
The next step before replacing the library file is to open the service management console (services.msc) and stop Remote Desktop Services.
Copy termsrv.dll from the downloaded archive for your Windows version to %SystemRoot%\System32\ (with replacement).
After replacing the file, run Remote Desktop Services and try to create two RDP sessions with the patched computer from different accounts. If you did everything correctly, two separate Remote Desktop session should open.
As a stable solution against replacing the termsrv.dll file with Windows updates, you should use the Open Source solution – RDP Wrapper Library (available on GitHub) which does not replace termsrv.dll, and is a layer between Terminal Services and SCM. More information about using the RDP Wrapper Library can be found here.
15 comments
Can I apply this to Windows 2012 server?
this article well works with 2012 server too. I successfully patched 2012 foundation server with 5 additional terminal licences! Author thank you very much. Many many thanks!
Is there a way to be notified when a second user logs in remotely? I like the feature but it does have a security risk if another account gets compromised.
To my knowledge there is not a way of being notified of the second logon but you can see active sessions by going to TaskManager->Users tab. There you can see all active or disconnected sessions.
Followed these instructions and it did not work for me. When I tried to back out of it my machine was hosed and I could not remote to my machine any more.
Update!!! It did work for me. I was trying from a network that did not have access to the box.
I was able to do this remotely and it works. I was receiving Access Denied errors to the termserv.dll file. I had to login through Teamviewer to remove my reliance on Remote Desktop Services. Then I used the “takeown /F “C:\Windows\System32\termserv.dll” /A” command to take ownership of the file. Then I was able to continue with the steps. Thanks!
fSingleSessionPerUser should be 1 if you want to reconnect to the same RDP session later.
worked for me too, thank you very much.
The process seemed to work well for me but after restarting i attempt a login but get an internal error occurred notice. Anybody know whats wrong?
Specify the full error text and you Windows build number.
Does the error occurs when you logon locally or when try to access your computer over RDP?
Is this working on windows 7?
why i only can rdp administrator account, for local account i can’t acces, solution please
Add your user account to the local “Remote Desktop Users” group (this action must be performed with administrator rights).
The Link is dead. Please give me a link or update this one. I still have an issue with the remote desktops not only for the virtual machines but the original computer such as Windows 8.1 32 bit.