在RDP会话实际断开时,是否有可能将其保持为“活动的”?我们正在虚拟机上运行windows-server-2012。
背景:我们正在该机器上自动执行GUI测试。
因此,我想这与会话是活动的或断开连接有关。
发布于 2018-01-24 22:14:43
:::::::::::::::::::::::::::::::::::::::::
:: 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会话断开连接,但只要没有屏幕保护程序或屏幕锁,您的应用程序就应该能够运行到完成。
https://serverfault.com/questions/893890
复制相似问题