如何在 Windows 10 和 11 上允許多個 RDP 會話

Jacki

遠程用戶可以通過遠程桌面服務 (RDP) 連接到其 Windows 10 和 11 計算機。您所需要做的就是啟用遠程桌面,授予用戶 RDP 訪問權限,並使用任何遠程桌面客戶端連接到計算機。但是,Windows 桌面版本中並發 RDP 會話的數量受到限制。僅允許一個活動的遠程桌面用戶會話。

如果您嘗試建立第二個 RDP 連接,將會出現一條警告,要求您斷開第一個用戶的會話。

Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway?

內容:

在 Windows 10 和 11 的所有桌面版本中使用遠程桌面服務存在多項限制:

  1. 只有 Windows Professional 和 Enterprise 版本可以接受遠程桌面連接。家庭/單語言 Windows 版本不允許 RDP 訪問;
  2. 只有一個同時 RDP 連接可用。嘗試啟動第二個 RDP 會話將提示用戶結束活動會話;
  3. 如果用戶正在計算機控制台(本地)工作,則當他們建立遠程 RDP 連接時,他們的本地會話將斷開(鎖定)。如果用戶從計算機控制台登錄 Windows,遠程 RDP 會話也將終止。

Windows 上的並發 RDP 連接數是許可證限制。 Microsoft 禁止創建基於工作站的終端 RDP 服務器以供多個用戶同時工作。

如果您的任務需要部署終端服務器,Microsoft 建議購買 Windows Server(默認情況下允許兩個同時 RDP 連接)。如果您需要更多並髮用戶會話,則需要購買 RDS CAL、安裝和配置遠程桌面會話主機 (RDSH) 角色,或部署 RDS 場。

從技術上講,任何具有足夠 RAM 和 CPU 資源的 Windows 版本都可以同時支持數十個遠程用戶會話。平均而言,RDP 用戶會話需要 150-200MB 內存(不包括正在運行的應用程序)。這意味著並發 RDP 會話的最大數量僅受計算機的可用資源的限制。

在本文中,我們將向您展示三種方法來取消 Windows 10 和 11 中並發 RDP 連接數的限制:

  • RDP 包裝器
  • 修改術語rv.dll文件
  • 將 Windows 10/11 版本升級到企業虛擬桌面(多會話)

筆記。本文中描述的對操作系統的任何修改均被視為違反 Windows 許可協議,使用時需自行承擔風險。

在繼續之前,請確保 Windows 中啟用了遠程桌面協議。

RDP 包裝器:在 Windows 上啟用多個 RDP 會話

RDP 包裝庫OpenSource 項目允許您在 Windows 10/11 上啟用多個 RDP 會話,而無需替換 termsrv.dll 文件。該工具充當 SCM(服務控制管理器)和遠程桌面服務之間的一層。 RDP 包裝器不會對 termsrv.dll 文件進行任何更改,它只是使用修改後的設置加載 termsrv。

因此,即使在 termsrv.dll 文件更新的情況下,RDPWrap 也能正常工作。它讓您不再害怕 Windows 更新。

重要的。在安裝 RDP 包裝器之前,請務必確保您使用的是 termsrv.dll 文件的原始(未修補)版本。否則,RDP Wrapper 可能會變得不穩定或根本無法啟動。

您可以從 GitHub 存儲庫下載 RDP Wrapperhttps://github.com/binarymaster/rdpwrap/releases(RDP 包裝庫的最新可用版本是 v1.6.2)。該項目自 2017 年以來一直沒有更新,但它可以在 Windows 10 和 11 的所有新版本中使用。要在現代版本的 Windows 上使用包裝器,只需更新 rdpwrap.ini 配置文件即可。

RDP Wrapper 被大多數防病毒掃描程序檢測為潛在危險程序。例如,它被分類為PUA:Win32/RDPWrap(潛在有害軟件)內置 Microsoft Defender 防病毒軟件的威脅級別較低。如果您的防病毒設置阻止 RDP Wrapper 啟動,您需要將其添加到例外中。

RDPWrap-v1.6.2.zip存檔包含一些文件:

  • RDPWinst.exe— 用於安裝/卸載 RDP 包裝器庫;
  • RDPConf.exe— RDP Wrapper 配置工具;
  • RDP檢查程序— RDP 檢查工具(本地 RDP 檢查器);
  • 安裝.bat、卸載.bat、更新.bat— 用於安裝、卸載和更新 RDP Wrapper 的批處理文件。

要安裝 RDPWrap,請運行安裝.bat以管理員身份歸檔。該程序安裝在 C:Program FilesRDP Wrapper 目錄中。

跑步RDP配置程序當安裝完成時。

最有可能的是,安裝後,該工具將立即顯示 RDP 包裝器正在運行(已安裝、正在運行、正在偵聽),但無法正常工作。注意紅色[不支持]警告。據報告,RDPWrapper 不支持此版本的 Windows 10 22H2(版本 10.0.19041.1949)。

這是因為rdpwrap.ini配置文件不包含您的 Windows 版本(版本)的設置。 +

✅ 在此處下載最新版本的 rdpwrap.inihttps://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini

手動將此頁面的內容複製到C:Program FilesRDP Wrapperrdpwrap.ini文件。或者使用 PowerShell cmdlet Invoke-WebRequest 下載 INI 文件(必須首先停止遠程桌面服務):

Stop-Service termservice -Force
Invoke-WebRequest https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini -outfile "C:Program FilesRDP Wrapperrdpwrap.ini"

您可以創建計劃任務來檢查 rdpwrap.ini 的更改並自動更新。

此屏幕截圖顯示最新版本的 rdpwrap.ini 文件 (Updated=2023-06-26) 在計算機上使用。

重新啟動計算機並運行 RDPConfig.exe 工具。檢查中的所有項目診斷部分是綠色的並且[完全支持]顯示消息。在我的例子中,RDP 包裝器在 Windows 11 22H2 上成功啟動。

現在嘗試在不同的用戶帳戶下與此計算機建立多個並發 RDP 會話(使用您最喜歡的 RDP 客戶端:mstsc.exe、RDCMan、mRemoteNG 等)。

您可以使用保存的 RDP 憑據連接到遠程計算機。

您可以使用以下命令檢查計算機上是否同時有兩個(或更多)RDP 會話處於活動狀態:

qwinsta

rdp-tcp#0         user1                 1  Active
rdp-tcp#1         user2                 2  Active

所有 Windows 版本均支持 RDPWrap 工具,因此您可以在任何 Windows 設備上構建自己的終端 (RDS) 服務器。因此您可以將任何版本的Windows客戶端變成功能齊全的終端服務器。

RDP 包裝器中提供以下選項:

  • 啟用遠程桌面
  • RDP 端口—更改默認遠程桌面端口號(TCP 3389)
  • 在登錄屏幕上隱藏用戶– 允許從 Windows 登錄屏幕隱藏用戶列表;
  • 每個用戶單個會話— 允許同一用戶帳戶下多個並發 RDP 會話。該選項設置fSingleSessionPerUser註冊表值0HKLMSYSTEM CurrentControlSetControlTerminal ServerfSingleSessionPerUser)。該參數也是通過GPO選項配置的將遠程桌面服務限制為單個遠程桌面服務會話在計算機配置 > 管理模板 > Windows 組件 > 遠程桌面服務 > 遠程桌面會話主機 > 連接下;
  • 會話影子模式允許您配置到 RDP 用戶桌面的遠程控制(影子)連接模式

您可以使用組策略設置 RDP 用戶會話的持續時間限制。這允許空閒用戶會話自動斷開連接。

RDP 包裝器無法在 Windows 上運行

在某些情況下,RDP 包裝器可能無法按您的預期工作,並且您可能無法在 Windows 上使用多個 RDP 連接。

termrv.dll 文件版本可以在 Windows 更新安裝過程中更新。如果 rdpwrap.ini 文件中缺少您的 Windows 版本的描述,則 RDP 包裝器將無法應用必要的設置。在這種情況下,狀態[不支持]。將顯示在 RDP 包裝器配置窗口中。

✅ 在這種情況下,您必須如上所述更新 rdpwrap.ini 文件。

如果更新 rdpwrap.ini 文件後 RDP Wrapper 不起作用,請嘗試打開 rdpwrap.ini 文件並查找適合您的 Windows 版本的部分。

如何了解 rdpwrapper 配置是否支持您的 Windows 版本?

下面的屏幕截圖顯示,對於我的 Windows 11 版本 (10.0.22621.317),有兩部分設置:

[10.0.22621.317]
...
[10.0.22621.317-SLInit]
...

如果 rdpwrap 配置文件中沒有適合您的 Windows 版本的部分,請嘗試在 Web 上搜索 rdpwrap.ini 文件。將您找到的配置設置添加到文件末尾。

如果安裝安全更新或升級 Windows 版本後 RDP 包裝器無法工作,請檢查是否有監聽器狀態:不聽RDPWrap 診斷部分中的警告。

嘗試更新 rdpwrap.ini 文件,然後重新安裝 rdpwrapper 服務:

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)啟用“限制連接數“計算機配置 -> 管理模板 -> Windows 組件 -> 遠程桌面服務 -> 遠程桌面會話主機 -> 連接”部分下的選項。將“允許的 RD 最大連接”值增加到 999999。

重新啟動計算機以更新本地組策略並應用設置。

修補Termsrv.dll以啟用多個遠程桌面會話

要在不使用 rdpwrapper 的情況下取消 Windows 中並發 RDP 用戶連接數的限制,您可以代替原來的術語rv.dll文件。這是遠程桌面服務使用的主要庫文件。該文件位於C:WindowsSystem32目錄。

建議在編輯或替換 termsrv.dll 文件之前對其進行備份。如有必要,這將幫助您恢復到文件的原始版本。打開提升的命令提示符並運行命令:

copy c:WindowsSystem32termsrv.dll termsrv.dll_backup

然後您需要獲得 termsrv.dll 文件的所有權。要將文件的所有者從 TrustedInstaller 更改為本地管理員組,請使用以下命令:

takeown /F c:WindowsSystem32termsrv.dll /A

SUCCESS: The file (or folder): c:WindowsSystem32termsrv.dll now owned by the administrators group

現在使用 icacls.exe 工具向本地管理員組授予對 termsrv.dll 文件的完全控制權限:

icacls c:WindowsSystem32termsrv.dll /grant Administrators:F

processed file: c:WindowsSystem32termsrv.dll Successfully processed 1 files; Failed processing 0 files.

現在您需要停止遠程桌面服務(定期服務)使用services.msc控制台或使用命令:

net stop TermService

它還會停止遠程桌面服務用戶模式端口重定向服務。

運行winver命令或以下 PowerShell 命令來查找您的 Windows 內部版本號:

Get-ComputerInfo | select WindowsProductName, WindowsVersion

就我而言,安裝了 Windows 10 build 22H2。

建議閱讀:允許非管理員用戶 RDP 訪問 Windows Server

然後使用任意十六進制編輯器(例如 Tiny Hexer)打開 termsrv.dll 文件。根據您使用的 Windows 版本,您需要根據下表查找並替換字符串:

Windows 構建 找到字符串 替換為
Windows 11 22H2 39 81 3C 06 00 00 0F 84 75 7A 01 00

B8 00 01 00 00 89 81 38 06 00 00 90

Windows 10 22H2 39 81 3C 06 00 00 0F 84 85 45 01 00
Windows 11 21H2(RTM) 39 81 3C 06 00 00 0F 84 4F 68 01 00
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 無法直接從 system32 文件夾編輯 termsvr.dll 文件。將其複製到桌面,修改後替換原文件。

例如,我的 Windows 10 x64 版本是 22H2 19045.2006(termsrv.dll 文件版本是 10.0.19041.1949)。在Tiny Hexer中打開termsrv.dll文件,然後找到文本:

39 81 3C 06 00 00 0F 84 75 7A 01 00

並將其替換為:

B8 00 01 00 00 89 81 38 06 00 00 90

保存文件並啟動 TermService。

如果出現問題並且您在遠程桌面服務中遇到一些問題,請停止該服務並將修改後的 termsrv.dll 文件替換為原始版本:

copy termsrv.dll_backup c:WindowsSystem32termsrv.dll

為了避免使用十六進制編輯器手動編輯 termsrv.dll 文件,您可以使用以下 PowerShell 腳本自動修補 termsrv.dll 文件。 PowerShell 腳本代碼可在我的 GitHub 存儲庫中通過以下鏈接獲取:

https://github.com/maxbakhub/winposh/blob/main/termsrv_rdp_patch.ps1

此腳本是為 Windows PowerShell 版本編寫的,不適用於現代 PowerShell Core。

👍 通過替換 termsrv.dll 文件在 Windows 10 或 11 中啟用多個 RDP 會話的方法的優點是防病毒軟件不會對其做出反應(與 RDPWrap 不同,RDPWrap 被許多防病毒產品檢測為惡意軟件/黑客工具/木馬)。

👎這樣做的缺點是,每次更新 Windows 版本時(或者每月累積補丁更新 termsrv.dll 的版本),您都必須手動編輯該文件。

Windows 10 企業多會話中的多個並發 RDP 連接

微軟最近發布了一個特別版本的操作系統,名為Windows 企業多會話(以前稱為用於遠程會話的 Windows 10 企業版和用於虛擬桌面的 Windows 10 企業版)

該版本的主要特點是它支持多個並發 RDP 用戶會話。儘管 Windows 多會話版本僅允許在 Azure VM 中運行,但您可以在本地網絡上安裝此版本並將該計算機用作終端服務器(即使這違反 Microsoft 的許可策略)。

企業多會話版本適用於 Windows 10 和 Windows 11。

接下來,我們將向您展示如何將 Windows 10 專業版升級到適用於虛擬桌面的 Windows 10 企業版,並同時將其用於多個 RDP 用戶。

打開命令提示符並檢查您當前的 Windows 版本(Professional在此示例中):

DISM /online /Get-CurrentEdition

使用以下命令將 Windows 10 版本從專業版升級到企業版:

changepk.exe /ProductKey NPPR9-FWDCX-D2C8J-H872K-2YT43

現在安裝 Windows 10 Enterprise 的 GVLK 密鑰以進行遠程會話:

slmgr.vbs /ipk CPWHC-NT2C7-VYW78-DHDB2-PG3GK

檢查您的 Windows 10 版本現已更改為服務器Rdsh(適用於虛擬桌面的 Windows 10 企業版)。

在 KMS 服務器上激活 Windows 10 企業多會話版本的副本:

slmgr /skms kms-srv.woshub.local:1688
slmgr /ato

請參閱密鑰管理服務 (KMS) 激活常見問題解答。

打開本地 GPO 編輯器 (gpedit.msc)並啟用每個用戶許可模式中設置遠程桌面授權模式(計算機配置 -> 策略 -> 管理模板 -> Windows 組件 -> 遠程桌面服務 -> 遠程桌面會話主機 -> 許可)。

激活後必須重新啟動 Windows。現在嘗試使用 RDP 使用不同的用戶帳戶連接到計算機。如您所見,Windows 10 企業版多會話開箱即用地支持同時 RDP 連接。

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

Windows 10 Enterprise for Virtual Desktops 2009           10.0.19041.2728

qwinsta

在本文中,我們研究了多種擺脫並發 RDP 用戶連接數量限制並在 Windows 10/11 桌面版上運行免費終端服務器的方法。每種方法都有其自身的優點和缺點。您選擇哪一個取決於您。