रिमोट उपयोगकर्ता रिमोट डेस्कटॉप सर्विसेज (RDP) के माध्यम से अपने Windows 10 और 11 कंप्यूटर्स से कनेक्ट कर सकते हैं। डिवाइस सेटिंग्स में RDP सक्षम करना और किसी भी रिमोट डेस्कटॉप क्लाइंट का उपयोग करके कंप्यूटर से कनेक्ट करना पर्याप्त है। लेकिन एक साथ RDP सत्रों की संख्या पर प्रतिबंध है — केवल एक रिमोट उपयोगकर्ता एक साथ काम कर सकता है। यदि आप दूसरा RDP सत्र खोलने का प्रयास करते हैं, तो पहले उपयोगकर्ता के सत्र को डिस्कनेक्ट करने के लिए कहने वाली चेतावनी दिखाई देगी।
Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway?
सभी डेस्कटॉप Windows संस्करण (Win 10 और 11 सहित) में रिमोट डेस्कटॉप सर्विस उपयोग पर कई प्रतिबंध हैं:
- आप केवल उच्च Windows संस्करणों (Professional और Enterprise) पर RDP के माध्यम से रिमोट कनेक्ट कर सकते हैं। Windows Home और Single Language संस्करणों में इनकमिंग रिमोट डेस्कटॉप कनेक्शन निषिद्ध हैं;
- केवल एक साथ RDP कनेक्शन समर्थित है। जब आप दूसरा RDP सत्र खोलने का प्रयास करते हैं, तो उपयोगकर्ता को सक्रिय कनेक्शन बंद करने के लिए कहा जाता है;
- यदि कोई उपयोगकर्ता कंप्यूटर के कंसोल पर स्थानीय रूप से काम कर रहा है, तो जब आप नया रिमोट RDP कनेक्शन बनाने का प्रयास करते हैं, तो कंसोल सत्र डिस्कनेक्ट हो जाएगा। एक रिमोट RDP सत्र भी जबरन डिस्कनेक्ट हो जाएगा यदि उपयोगकर्ता स्थानीय रूप से लॉग इन करने का प्रयास करेगा।

वास्तव में, Windows पर एक साथ RDP कनेक्शन की संख्या लाइसेंस द्वारा सीमित है (तकनीकी पहलू द्वारा नहीं)। इस प्रकार, यह प्रतिबंध वर्कस्टेशन पर आधारित टर्मिनल RDP सर्वर बनाने की अनुमति नहीं देता जिसे कई उपयोगकर्ताओं द्वारा उपयोग किया जा सके। Microsoft का तर्क सरल है: यदि आपको टर्मिनल सर्वर चाहिए — Windows Server लाइसेंस, RDS CALs खरीदें, रिमोट डेस्कटॉप सेशन होस्ट (RDSH) भूमिका इंस्टॉल और कॉन्फ़िगर करें।
तकनीकी रूप से, पर्याप्त RAM वाले किसी भी Windows संस्करण में कई दर्जन रिमोट उपयोगकर्ताओं का एक साथ संचालन समर्थित हो सकता है। औसतन, एक उपयोगकर्ता सत्र के लिए 150-200 MB RAM की आवश्यकता होती है (चल रहे ऐप्स को छोड़कर)। इसलिए, एक साथ RDP सत्रों की अधिकतम संख्या सैद्धांतिक रूप से केवल कंप्यूटर संसाधनों द्वारा सीमित है।
आइए Windows 10 और 11 पर एक साथ RDP कनेक्शन की अनुमति देने के दो तरीकों पर विचार करें: RDP Wrapper टूल का उपयोग करना या termsrv.dll सिस्टम फ़ाइल को पैच करना।
नोट. लेख में वर्णित सिस्टम संशोधनों को Microsoft लाइसेंस समझौते का उल्लंघन माना जाता है और आप उन्हें अपने जोखिम पर कर सकते हैं।RDP Wrapper: Windows पर एकाधिक RDP सत्र सक्षम करें
RDP Wrapper Library ओपन सोर्स प्रोजेक्ट आपको termsrv.dll फ़ाइल को बदले बिना Windows 10 पर एकाधिक RDP सत्र सक्षम करने की अनुमति देता है। यह टूल SCM (सर्विस कंट्रोल मैनेजर) और रिमोट डेस्कटॉप सर्विसेज के बीच एक लेयर के रूप में काम करता है। RDPWrap न केवल एक साथ कई RDP कनेक्शन के लिए समर्थन सक्षम करने की अनुमति देता है बल्कि Windows Home संस्करणों पर RDP सर्वर बनाने की भी अनुमति देता है। RDP Wrapper termsrv.dll फ़ाइल में कोई परिवर्तन नहीं करता, यह केवल परिवर्तित पैरामीटर्स के साथ termsrv लाइब्रेरी लोड करता है।
इस प्रकार, termsrv.dll फ़ाइल अपडेट होने पर भी RDPWrap काम करेगा। यह आपको Windows अपडेट से डरने की अनुमति नहीं देता।
महत्वपूर्ण. RDP Wrapper इंस्टॉल करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि आप termsrv.dll फ़ाइल के मूल (अनपैच्ड) संस्करण का उपयोग कर रहे हैं। अन्यथा, RDP Wrapper अस्थिर हो सकता है या बिल्कुल शुरू नहीं हो सकता।आप RDP Wrapper को GitHub रिपॉजिटरी https://github.com/binarymaster/rdpwrap/releases से डाउनलोड कर सकते हैं (RDP Wrapper Library का नवीनतम उपलब्ध संस्करण v1.6.2 है)। प्रोजेक्ट को 2017 के बाद अपडेट नहीं किया गया है, लेकिन इसका उपयोग Windows 10 के सभी नए बिल्ड्स और यहां तक कि Windows 11 में भी किया जा सकता है।
RDPWrap-v1.6.2.zip आर्काइव में कुछ फ़ाइलें हैं:
- RDPWinst.exe — RDP Wrapper Library इंस्टॉल/अनइंस्टॉल प्रोग्राम;
- RDPConf.exe — RDP Wrapper कॉन्फ़िगरेशन टूल;
- RDPCheck.exe — एक RDP चेक यूटिलिटी (लोकल RDP चेकर);
- install.bat, uninstall.bat, update.bat — RDP Wrapper को इंस्टॉल, अनइंस्टॉल, और अपडेट करने के लिए बैच फ़ाइलें।

RDPWrap इंस्टॉल करने के लिए, install.bat फ़ाइल को एडमिनिस्ट्रेटर के रूप में चलाएँ। प्रोग्राम C:\Program Files\RDP Wrapper डायरेक्टरी में इंस्टॉल हो जाएगा।

इंस्टॉलेशन पूरा होने के बाद, RDPConfig.exe चलाएँ। सबसे अधिक संभावना है, इंस्टॉलेशन के तुरंत बाद, टूल दिखाएगा कि RDP व्रैपर चल रहा है (Installed, Running, Listening), लेकिन काम नहीं कर रहा है। लाल चेतावनी [not supported] पर ध्यान दें। यह रिपोर्ट करता है कि Windows 10 का यह संस्करण (ver. 10.0.19041.1320) RDPWrapper द्वारा समर्थित नहीं है।

तथ्य यह है कि Windows 10 के प्रत्येक संस्करण के लिए rdpwrap.ini कॉन्फ़िगरेशन फ़ाइल में एक विवरण होना चाहिए। आपकी कॉन्फ़िगरेशन फ़ाइल में बस आपके Windows 10 बिल्ड के लिए कोई सेटिंग नहीं है।
rdpwrap.ini फ़ाइल का वर्तमान संस्करण यहाँ डाउनलोड किया जा सकता है https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini
इस पेज की सामग्री को मैन्युअली "C:\Program Files\RDP Wrapper\rdpwrap.ini" फ़ाइल में कॉपी करें। या PowerShell cmdlet Invoke-WebRequest का उपयोग करके फ़ाइल डाउनलोड करें (पहले रिमोट डेस्कटॉप सर्विस रोकना आवश्यक है):
Stop-Service termservice -Force
Invoke-WebRequest https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini -outfile "C:\Program Files\RDP Wrapper\rdpwrap.ini"

अपना कंप्यूटर पुनरारंभ करें, RDPConfig.exe टूल चलाएँ। जाँचें कि Diagnostics सेक्शन में सभी आइटम हरे हैं और कैप्शन [Fully supported] प्रकट होता है। नीचे स्क्रीनशॉट दिखाता है कि इस नए कॉन्फ़िगरेशन के साथ RDP Wrapper Windows 11 पर भी ठीक काम करता है।

अपने कंप्यूटर पर कई RDP सत्र स्थापित करने का प्रयास करें (किसी भी RDP क्लाइंट का उपयोग करें: mstsc.exe, rdcman, आदि)। यह अच्छी तरह से काम करता है (आप सेव्ड RDP क्रेडेंशियल्स का भी उपयोग कर सकते हैं)! अब आपका Windows 10 दो (और अधिक) रिमोट उपयोगकर्ताओं को एक साथ अलग-अलग RDP सत्रों का उपयोग करने की अनुमति देता है।

RDPWrap टूल सभी Windows संस्करणों में समर्थित है, इसलिए आप किसी भी Windows डिवाइस पर अपना टर्मिनल (RDS) सर्वर बना सकते हैं।
साथ ही, RDP Wrapper अनुमति देता है:
- रिमोट डेस्कटॉप सक्षम करें;
- Hide users on logon screen विकल्प आपको Windows लॉगऑन स्क्रीन से उपयोगकर्ताओं की सूची छुपाने की अनुमति देता है;
- यदि आप Single session per user विकल्प को अक्षम करते हैं, तो एक ही उपयोगकर्ता खाते के तहत एक साथ कई RDP सत्रों की अनुमति दी जाएगी (रजिस्ट्री पैरामीटर fSingleSessionPerUser = 0 रजिस्ट्री कुंजी
HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUserके तहत सेट है); - RDP Port — आप रिमोट डेस्कटॉप पोर्ट नंबर को TCP 3389 से किसी अन्य में बदल सकते हैं;
- Session Shadowing Mode सेक्शन में, आप RDP सत्रों के लिए रिमोट कंट्रोल (शैडो) कनेक्शन मोड कॉन्फ़िगर कर सकते हैं।
आप GPO का उपयोग करके RDP सत्रों की अवधि पर सीमाएं सेट कर सकते हैं।
Windows 10 पर RDP Wrapper काम नहीं कर रहा
कुछ मामलों में, RDP Wrapper टूल अपेक्षा के अनुरूप काम नहीं करता और आप अपने Windows होस्ट से एकाधिक RDP सत्रों का उपयोग करके कनेक्ट नहीं कर सकते।
यदि यूटिलिटी स्टेटस सेक्शन में [not supported] दिखाती है, तो rdpwrap.ini फ़ाइल में आपके Windows बिल्ड के लिए कॉन्फ़िगरेशन नहीं है। ऊपर वर्णित अनुसार rdpwrap.ini फ़ाइल अपडेट करें।
यदि rdpwrap.ini फ़ाइल अपडेट करने के बाद RDP Wrapper काम नहीं करता, तो rdpwrap.ini फ़ाइल खोलने और अपने Windows संस्करण के लिए विवरण सेक्शन खोजने का प्रयास करें। कैसे पता करें कि rdpwrapper कॉन्फ़िगरेशन फ़ाइल में आपके Windows संस्करण के लिए समर्थन है?
नीचे स्क्रीनशॉट दिखाता है कि मेरे Windows 10 संस्करण (10.0.19041.1320) के लिए दो विवरण सेक्शन हैं:
[10.0.19041.1320] ….. [10.0.19041.1320-SLInit] …..

यदि कॉन्फ़िगरेशन फ़ाइल में आपके Windows संस्करण के लिए कोई सेक्शन नहीं है, तो अपने Windows बिल्ड के लिए rdpwrap.ini स्ट्रिंग्स खोजने के लिए Google का उपयोग करने का प्रयास करें। मिली लाइनों को फ़ाइल के अंत में जोड़ें।
इसके अलावा, यदि आपको RDPWrapper के साथ समस्या है, तो आप https://github.com/stascorp/rdpwrap/issues पर इश्यू खोल सकते हैं। यहाँ आप वास्तविक rdpwrap.ini फ़ाइल भी ढूंढ सकते हैं।
यदि सुरक्षा अपडेट इंस्टॉल करने या Windows 10 बिल्ड अपग्रेड करने के बाद, RDP Wrapper सही ढंग से काम नहीं करता, तो जाँचें कि क्या Diagnostics सेक्शन में "Listener state: Not listening" प्रदर्शित होता है।

rdpwrap.ini फ़ाइल अपडेट करने का प्रयास करें, और फिर सर्विस को पुनः इंस्टॉल करें:
rdpwinst.exe -u
rdpwinst.exe -i
ऐसा होता है कि जब आप किसी भिन्न उपयोगकर्ता खाते के तहत दूसरा RDP कनेक्शन स्थापित करने का प्रयास करते हैं, तो आपको एक चेतावनी दिखाई देती है:
The number of connections to this computer is limited and all connections are in use right now. Try connecting later or contact your system administrator.

इस मामले में, आप लोकल ग्रुप पॉलिसी एडिटर (gpedit.msc) का उपयोग करके पॉलिसी "Limit number of connections" को Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections सेक्शन में सक्षम कर सकते हैं। इसका मान 999999 पर बदलें।

GPO अपडेट करने और सेटिंग्स लागू करने के लिए अपना कंप्यूटर पुनरारंभ करें।
Termsrv.dll को संशोधित करके एकाधिक RDP सत्र सक्षम करें
Windows 10 में rdpwrapper का उपयोग किए बिना समवर्ती RDP उपयोगकर्ता कनेक्शन की संख्या पर प्रतिबंध हटाने के लिए, आप मूल termsrv.dll फ़ाइल को बदल सकते हैं। यह रिमोट डेस्कटॉप सर्विस द्वारा उपयोग की जाने वाली मुख्य लाइब्रेरी फ़ाइल है। फ़ाइल C:\Windows\System32 डायरेक्टरी में स्थित है।
इससे पहले कि आप termsrv.dll फ़ाइल को संपादित या बदलें, इसकी बैकअप कॉपी बनाना उचित है। यदि आवश्यक हो तो यह आपको फ़ाइल के मूल संस्करण पर वापस लौटने में मदद करेगा। एलिवेटेड कमांड प्रॉम्प्ट खोलें और कमांड चलाएँ:
copy c:\Windows\System32\termsrv.dll termsrv.dll_backup
फिर आपको फ़ाइल का स्वामित्व लेने की आवश्यकता है। कमांड का उपयोग करके फ़ाइल के मालिक को TrustedInstaller से स्थानीय Administrators ग्रुप में बदलें:
takeown /F c:\Windows\System32\termsrv.dll /A
SUCCESS: The file (or folder): c:\Windows\System32\termsrv.dll now owned by the administrators group
अब icacls.exe का उपयोग करके termsrv.dll फ़ाइल पर स्थानीय एडमिनिस्ट्रेटर्स ग्रुप को Full Control अनुमतियाँ दें:
icacls c:\Windows\System32\termsrv.dll /grant Administrators:F
processed file: c:\Windows\System32\termsrv.dll Successfully processed 1 files; Failed processing 0 files.

उसके बाद, services.msc कंसोल या कमांड प्रॉम्प्ट से रिमोट डेस्कटॉप सर्विस (TermService) रोकें:
Net stop TermService
रिमोट डेस्कटॉप सर्विसेज UserMode Port Redirector सर्विस इसके साथ रुक जाती है।

आगे बढ़ने से पहले, आपको अपने Windows 10 का संस्करण (बिल्ड नंबर) पता करना होगा। PowerShell कंसोल खोलें और कमांड चलाएँ:
Get-ComputerInfo | select WindowsProductName, WindowsVersion
मेरे मामले में, Windows 10 बिल्ड 21H1 इंस्टॉल है।
फिर किसी भी HEX एडिटर (उदाहरण के लिए, Tiny Hexer) का उपयोग करके termsrv.dll फ़ाइल खोलें। आपके Windows बिल्ड के आधार पर, आपको नीचे दी गई तालिका के अनुसार स्ट्रिंग ढूंढनी और बदलनी होगी:
| Windows बिल्ड | ढूंढने के लिए स्ट्रिंग | इससे बदलें |
| Windows 11 RTM ( 21H2 – 22000.258) |
39 81 3C 06 00 00 0F 84 4F 68 01 00 | B8 00 01 00 00 89 81 38 06 00 00 90 |
| Windows 10 x64 21H2 | 39 81 3C 06 00 00 0F 84 DB 61 01 00 | |
| Windows 10 x64 21H1 | 39 81 3C 06 00 00 0F 84 2B 5F 01 00 | |
| Windows 10 x64 20H2 | 39 81 3C 06 00 00 0F 84 21 68 01 00 | |
| Windows 10 x64 2004 | 39 81 3C 06 00 00 0F 84 D9 51 01 00 | |
| Windows 10 x64 1909 | 39 81 3C 06 00 00 0F 84 5D 61 01 00 | |
| 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 |
Tiny Hexer एडिटर termsvr.dll फ़ाइल को सीधे system32 फ़ोल्डर से संपादित नहीं कर सकता। इसे अपने डेस्कटॉप पर कॉपी करें, और संशोधन के बाद मूल फ़ाइल को बदलें।
उदाहरण के लिए, मेरा Windows 10 x64 बिल्ड 21H1 (19043.1320) है जिसमें termsrv.dll फ़ाइल संस्करण 10.0.19041.1320 है। Tiny Hexer में termsrv.dll फ़ाइल खोलें, फिर टेक्स्ट ढूंढें:
39 81 3C 06 00 00 0F 84 2B 5F 01 00
और इसे इससे बदलें:
B8 00 01 00 00 89 81 38 06 00 00 90

फ़ाइल सेव करें और TermService चलाएँ।
यदि कुछ गलत होता है और आपको रिमोट डेस्कटॉप सर्विस के साथ कुछ समस्याओं का अनुभव होता है, तो सर्विस रोकें और संशोधित termsrv.dll फ़ाइल को मूल संस्करण से बदलें:
copy termsrv.dll_backup c:\Windows\System32\termsrv.dll
PowerShell का उपयोग करके Windows पर Termsrv.dll पैच करना
HEX एडिटर का उपयोग करके termsrv.dll फ़ाइल को मैन्युअली संशोधित न करने के लिए, आप पैच को स्वचालित रूप से लागू करने के लिए निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं। यह स्क्रिप्ट Windows PowerShell संस्करण पर आधारित है और आधुनिक PowerShell Core पर काम नहीं करती। स्क्रिप्ट यूनिवर्सल है और Windows 10 (1809+) और Windows 11 के सभी संस्करणों पर termsrv.dll फ़ाइल को पैच करने के लिए उपयोग की जा सकती है।
# Stop RDP service, make a backup of the termsrv.dllfile and change the permissions
Stop-Service UmRdpService -Force
Stop-Service TermService -Force
$termsrv_dll_acl = Get-Acl c:\windows\system32\termsrv.dll
Copy-Item c:\windows\system32\termsrv.dll c:\windows\system32\termsrv.dll.copy
takeown /f c:\windows\system32\termsrv.dll
$new_termsrv_dll_owner = (Get-Acl c:\windows\system32\termsrv.dll).owner
cmd /c "icacls c:\windows\system32\termsrv.dll /Grant $($new_termsrv_dll_owner):F /C"
# search for a pattern in termsrv.dll file
$dll_as_bytes = Get-Content c:\windows\system32\termsrv.dll -Raw -Encoding byte
$dll_as_text = $dll_as_bytes.forEach('ToString', 'X2') -join ' '
$patternregex = ([regex]'39 81 3C 06 00 00(\s\S\S){6}')
$patch = 'B8 00 01 00 00 89 81 38 06 00 00 90'
$checkPattern=Select-String -Pattern $patternregex -InputObject $dll_as_text
If ($checkPattern -ne $null) {
$dll_as_text_replaced = $dll_as_text -replace $patternregex, $patch
}
Elseif (Select-String -Pattern $patch -InputObject $dll_as_text) {
Write-Output 'The termsrv.dll file is already patch, exitting'
Exit
}
else {
Write-Output "Pattern not found "
}
# patching termsrv.dll
[byte[]] $dll_as_bytes_replaced = -split $dll_as_text_replaced -replace '^', '0x'
Set-Content c:\windows\system32\termsrv.dll.patched -Encoding Byte -Value $dll_as_bytes_replaced
# comparing two files
fc.exe /b c:\windows\system32\termsrv.dll.patched c:\windows\system32\termsrv.dll
# replacing the original termsrv.dll file
Copy-Item c:\windows\system32\termsrv.dll.patched c:\windows\system32\termsrv.dll -Force
Set-Acl c:\windows\system32\termsrv.dll $termsrv_dll_acl
Start-Service UmRdpService
Start-Service TermService
पूरा स्क्रिप्ट कोड मेरे GitHub रिपॉजिटरी में https://github.com/maxbakhub/winposh/blob/main/termsrv_rdp_patch.ps1 पर उपलब्ध है।
स्क्रिप्ट निष्पादित करने के लिए, इसे अपने कंप्यूटर पर डाउनलोड करें। वर्तमान सत्र के लिए PowerShell एक्ज़ीक्यूशन पॉलिसी सेटिंग्स बदलें:
Set-ExecutionPolicy Bypass -Scope Process -Force
और स्क्रिप्ट चलाएँ:
C:\users\root\desktop\termsrv_rdp_patch.ps1

स्क्रिप्ट को Windows अपडेट इंस्टॉल करने के बाद चलाया जा सकता है ताकि termsrv.dll फ़ाइल में तुरंत परिवर्तन किए जा सकें (आपको मासिक संचयी अपडेट की स्थापना के दौरान Windows 10 बिल्ड अपग्रेड या termsrv.dll फ़ाइल के संस्करण को अपडेट करने के बाद हर बार HEX एडिटर में termsrv.dll फ़ाइल को संशोधित करने की आवश्यकता नहीं है)।
Windows 10 या 11 में termsrv.dll फ़ाइल को बदलकर एकाधिक RDP सत्र सक्षम करने की विधि का लाभ यह है कि एंटीवायरस इस पर प्रतिक्रिया नहीं देते (RDPWrap के विपरीत, जिसे कई एंटीवायरस द्वारा Malware/HackTool/Trojan के रूप में पहचाना जाता है)।
मुख्य कमी यह है कि आपको हर बार Windows 10 बिल्ड अपग्रेड करने पर (या मासिक संचयी अपडेट की स्थापना के दौरान termsrv.dll फ़ाइल के संस्करण को अपडेट करने पर) termsrv.dll फ़ाइल को मैन्युअली संपादित करना होगा। और यदि आप RDPWrapper का उपयोग कर रहे हैं, तो आपको Windows अपडेट इंस्टॉल करने के बाद rdpwrap.ini फ़ाइल को भी अपडेट करना होगा।
इस लेख में, हमने देखा कि समवर्ती RDP उपयोगकर्ता कनेक्शन की संख्या पर प्रतिबंध कैसे हटाया जाए और Windows के डेस्कटॉप संस्करणों पर मुफ्त टर्मिनल सर्वर चलाया जाए।