Keep disconnected RDP session as active

Is there any possibility to keep an RDP session as "active" when it was actually disconnected? We are running windows-server-2012 on a virtual machine.

Background: мы автоматически выполняем тесты графического интерфейса пользователя на этой машине.

  • Если кто-то вошел в систему через RDP (и ничего не делает), тесты пройдут успешно
  • Если сеанс RDP отключен, тесты не пройдут в точке, где имитируются нажатия клавиш

Полагаю, это как-то связано с активностью или отключением сеанса.

1
задан 24 January 2018 в 16:49
1 ответ
:::::::::::::::::::::::::::::::::::::::::
:: 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, но до тех пор, пока нет заставки или блокировки экрана, ваше приложение должно работать до завершения.

1
ответ дан 3 December 2019 в 23:20

Теги

Похожие вопросы