Windows 10 和 11 中的最大並發連接數限制

Jacki

在 Windows 桌面版本中,來自其他計算機的同時網絡連接的數量受到限制。例如,只有20Windows 10 和 11(無論版本如何)支持同時傳入會話(連接)。當運行 Windows 10/11 的計算機用作准文件服務器或打印服務器時,如果超出 TCP/IP 會話限制,用戶在連接時會收到錯誤消息:

No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept.

Windows 11 最終用戶許可協議 (EULA)規定您不能同時將超過 20 個設備連接到桌面設備。

設備連接。最多 20 台其他設備可以遠程訪問許可設備上安裝的軟件,僅出於個人或內部目的使用以下軟件功能:許可設備上的文件服務、打印服務、Internet 信息服務以及 Internet 連接共享和電話服務。您可以允許任意數量的設備訪問許可設備上的軟件,以在設備之間同步數據。但是,本小節並不意味著您有權在任何其他設備上安裝該軟件或使用該軟件的主要功能(本小節中列出的功能除外)。

微軟限制 Windows 的非服務器(桌面)版本作為完整服務器運行,可能會鼓勵用戶購買 Windows Server 許可證(或切換到 samba😊)。

使用以下命令檢查 Windows 中傳入會話的數量限制:

net config server

電流限制:

Maximum Logged On Users 20

例如,Windows Server 的連接限制要高得多16777216

請注意的值Idle session time (min)範圍。默認情況下,Windows 會斷開超過 15 分鐘不活動的會話。如果您想更快地斷開未使用的會話,請縮短超時時間(例如縮短至五分鐘)。

net config server /autodisconnect:5

如果超過同時連接到計算機的數量,您可以手動斷開某些設備。列出該計算機上的活動網絡連接:

net session

斷開與計算機的所有活動會話(通過主機名或 IP 地址):

net session \192.168.31.94 /d

閱讀更多:如何修復 MSConfig 最大內存 BSOD 和重置問題

重置與計算機的所有活動連接

net session /delete

如果您希望在達到最大連接數時自動斷開某些客戶端的連接,可以使用 PowerShell 自動化。下面是一個簡單的 PowerShell 腳本示例,該腳本獲取活動會話列表,當達到 19 個並發連接時,它會斷開超時時間最長的 2 個會話(或使用其他邏輯)。

$number_of_old_sessions_to_kill=2
$output = net session | Select-String -Pattern \
$CurConns= ($output| Measure-Object -Line).Lines
if ($CurConns -ge 19) {
$sessions = @()
$output | foreach {
$parts = $_ -split "s+", 4
$session= New-Object -Type PSObject -Property @{
Computer = $parts[0].ToString();
Username = $parts[1];
Opens = $parts[2];
IdleTime = $parts[3];
}
$sessions += $session
}
$oldsessions=$sessions|Sort-Object -Property IdleTime -Descending | Select-Object -First $number_of_old_sessions_to_kill
ForEach ($oldsession in $oldsessions) {
net session $($oldsession.Computer) /d /y
}
}

使用任務計劃程序運行此 PowerShell 腳本分鐘斷開空閒會話。

對於早期版本的 Windows,tcpip.sys 文件的補丁可以禁用桌面操作系統版本中的會話限制,類似於 RDP Wrapper 庫。但我還沒有看到任何針對 Windows 10 和 11 的此類補丁。無論如何,它們的使用都違反了許可協議。