When providing remote technical support or collaborating on Windows Server environments, there's often a need for multiple administrators to simultaneously view (and ideally control) the same desktop session. The native Windows Remote Desktop Services (RDS) in Server 2008 R2 doesn't natively support concurrent connections to a single session using the same credentials.
Windows Server enforces session isolation by default - when a second user attempts to connect with the same credentials, one of two things happens:
- The existing session gets disconnected
- A new session is created (if allowed by licensing)
Here are proven approaches to achieve collaborative session viewing:
1. Using Third-party Tools
Tools like ScreenConnect or TeamViewer allow session sharing natively. For a custom RDP-based solution:
# PowerShell script to clone RDP session (requires admin rights)
$sessionID = (quser | Where-Object { $_ -match 'rdp' }).Trim() -split '\s+' | Select-Object -Last 1
tscon $sessionID /dest:console
mstsc /v:localhost /shadow:$sessionID /control /noConsentPrompt
2. RDP Shadowing with Modifications
Enable shadowing in Group Policy:
Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services
Set "Set rules for remote control of Remote Desktop Services user sessions" to Enabled
Configure "Options" to "Full Control without user's permission"
3. Virtual Channel Implementation
Develop a custom RDP virtual channel for session mirroring:
// C# example for RDP virtual channel initialization
public class SessionMirroringPlugin : IWTSPlugin
{
public void Initialize(IWTSVirtualChannelManager pChannelMgr)
{
pChannelMgr.CreateListener("MIRRORCHANNEL", 0, this);
}
public void Connected(IWTSVirtualChannel pChannel)
{
// Implement your session mirroring logic here
}
}
For production environments, consider:
- Session recording requirements
- Input conflict resolution between multiple controllers
- Bandwidth optimization for multiple viewers
- Security implications of shared credentials
Warning: These changes affect system stability. Create backups first.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"fSingleSessionPerUser"=dword:00000000
"MaxInstanceCount"=dword:00000002
Always test configuration changes in a non-production environment first. The ideal solution depends on your specific collaboration requirements and security constraints.
When providing remote technical support or collaborating on a Windows Server 2008 R2 system, you often need multiple users to simultaneously view and interact with the same desktop session. The native Remote Desktop Services in Windows Server 2008 R2 doesn't allow concurrent connections to a single session by default.
The most straightforward approach involves modifying Terminal Services settings:
# PowerShell command to check current RDP configuration
Get-WmiObject -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices |
Select-Object -Property AllowMultipleSessions
To enable multiple simultaneous connections:
# Requires administrative privileges
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fSingleSessionPerUser" -Value 0
For scenarios where you need one controller and one viewer:
# Initiate Remote Assistance session
msra.exe /offerRA [target_computer_name]
Commercial solutions like:
- ScreenConnect
- TeamViewer
- DameWare Remote Support
Administrators can shadow existing sessions using:
# Command line shadowing
mstsc /v:servername /shadow:sessionID /control /noConsentPrompt
For permanent configuration changes:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"fSingleSessionPerUser"=dword:00000000
"MaxInstanceCount"=dword:00000004
Always implement:
- Network Level Authentication
- Session timeouts
- Activity logging