Windows

當使用者連接到終端伺服器時觸發事件?

  • March 26, 2013

我們有一個(非常)脆弱的軟體套件在我們的數據中心的伺服器上執行,它需要使用者登錄,但如果使用者登錄兩次(資源爭用,各種問題),就會崩潰並崩潰

由於其脆弱的性質,某些程序一直中斷,需要我們的支持人員通過 RDP 連接到機器並重新啟動東西。他們通過在打開會話中執行的通用帳戶進行連接,然後斷開連接而不是註銷。

問題是,有時他們最終不會連接到斷開的會話,而是產生一個新的會話,伺服器隨後失敗。

我正在尋找一種方法來檢測,在連接/登錄時,如果機器上有另一個 RDP 會話並警告使用者,這樣可以避免災難。

我非常想把這台機器從高處扔出去,但此時更換軟體不是一種選擇。

更新

最後,我實現了這兩種解決方案。這很有效。

一種方法可能是執行一個登錄腳本,將他們連接到斷開的會話,而不是要求他們採取一些行動。

SETLOCAL
SET SESSIONNUMBER=-1
FOR /F "skip=1 tokens=3" %%i in ('query session %username% ^| find /v ">"') DO SET SESSIONNUMBER=%%i
IF {%SESSIONNUMBER%}=={-1} GOTO :EOF
tscon.exe %SESSIONNUMBER%
ENDLOCAL
logoff.exe

創建組策略(域或編輯本地電腦設置):電腦配置、管理模板、Windows 組件、終端服務、將終端服務使用者限制為單個遠端會話設置、啟用。

這將迫使使用者進入現有會話;除非其他人目前正在會話中(其中會稍微複雜一些,但您似乎並不擔心兩個人同時連接的可能性)。

這不是您要求的,但可以防止問題而不是添加一些瘋狂的腳本。

引用自:https://serverfault.com/questions/485245