Windows-Server-2012
使斷開的 RDP 會話保持活動狀態
是否有可能在實際斷開連接時將 RDP 會話保持為“活動”?我們在虛擬機上執行 windows-server-2012。
背景:我們在該機器上自動執行 GUI 測試。
- 如果有人通過 RDP 登錄(並且什麼都不做),則測試成功
- 如果 RDP 會話斷開連接,則測試會在模擬鍵盤敲擊時失敗
所以我想這與會話處於活動狀態或斷開連接有關。
::::::::::::::::::::::::::::::::::::::::: :: Automatically check & get admin rights ::::::::::::::::::::::::::::::::::::::::: @echo off CLS ECHO. ECHO ============================= ECHO Running Admin shell ECHO ============================= :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (shift & goto gotPrivileges) ECHO. ECHO ************************************** ECHO Invoking UAC for Privilege Escalation ECHO ************************************** setlocal DisableDelayedExpansion set "batchPath=%~0" setlocal EnableDelayedExpansion ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" "%temp%\OEgetPrivileges.vbs" exit /B :gotPrivileges :::::::::::::::::::::::::::: :START :::::::::::::::::::::::::::: setlocal & pushd . :::::::::::::::::::::::::::: ::Get sessionID for current user, switch context to console. :::::::::::::::::::::::::::: FOR /F "skip=1 tokens=3 usebackq" %%X in (`query session %USERNAME%`) DO tscon %%X /dest:console START CALC.EXE GOTO :EOF
只需將其保存為遠端系統上的 .bat 並用您實際想要執行的執行檔替換“START CALC.EXE”行。當您準備好執行測試時,RDP 進入系統並執行批處理文件。
該腳本首先獲得管理員權限,然後將目前使用者會話從 RDP 切換到控制台。您將與 RDP 會話斷開連接,但只要沒有螢幕保護程序或螢幕鎖定,您的應用程序就應該能夠執行完成。