我们的数据中心服务器上运行着一个(非常)脆弱的软件套件,它需要用户登录,但如果用户登录两次,它就会崩溃(资源争用、各种问题)
由于其脆弱性,某些进程总是会中断,需要我们的支持人员通过 RDP 连接到机器并重新启动。他们通过在开放会话中运行的通用帐户进行连接,然后断开连接而不是注销。
问题是,有时它们最终不会连接到断开连接的会话,而是产生一个新会话,随后服务器出现故障。
我正在寻找一种方法来检测连接/登录时机器上是否有另一个 RDP 会话并警告用户,以避免灾难。
我真想把这台机器从高高的窗户扔出去,但目前更换软件是不可能的。
更新
最后,我实施了这两种解决方案。效果非常好。
答案1
一种方法可能是运行一个登录脚本,将他们连接到断开连接的会话,而不是要求他们采取某些行动。
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
答案2
创建组策略(域或编辑本地计算机设置):计算机配置、管理模板、Windows 组件、终端服务、将终端服务用户限制为单个远程会话设置、启用。
这会强制用户进入现有会话;除非当前有其他人处于该会话中(这稍微复杂一些,但您似乎并不担心两个人同时连接的可能性)。
这不是您想要的,但可以防止出现问题,而不是添加一些疯狂的脚本。