You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式检测并关闭已存在的RDP连接

Windows服务端检测并主动关闭RDP连接的实现方案

所有操作均使用Windows系统原生工具,无需安装第三方软件,兼容Windows Server 2012及以上全版本系统。

检测当前活跃RDP连接

优先使用系统自带的会话查询命令,适合直接集成到业务脚本/程序逻辑中:

  • 执行query session命令可列出服务器上所有现存会话,返回结果中会话名带rdp-tcp前缀的条目即为活跃RDP连接,条目内包含会话ID、关联用户名、连接状态、登录时间等信息。典型返回结果如下:
    会话名       用户名       ID  状态   类型      设备
    services                    0  断开
    console                     1  正常
    rdp-tcp#0    Administrator  2  正常   rdpwd
    
  • 若要快速过滤仅保留RDP连接条目,直接执行query session | findstr rdp-tcp即可,命令无返回则代表当前无活跃RDP连接。
  • 若需要在代码中集成检测逻辑,可直接读取WMI类Win32_Session,筛选SessionType=0且连接状态为Active的条目,即可拿到对应RDP会话的ID。

关闭指定RDP连接

拿到目标RDP会话的ID后,使用系统自带的会话重置命令即可强制断开连接,执行后对应RDP客户端会立即被踢出,无需用户交互:

  • 命令格式:reset session <会话ID> /server:localhost
  • 示例:若检测到的RDP会话ID为2,执行reset session 2 /server:localhost即可立即断开该连接。

注意:执行断开操作需要本地管理员权限,若你通过业务程序调用该命令,需确保程序运行身份具备对应权限,否则会返回权限不足错误。

业务场景适配示例

如果需要在收到客户端请求时自动断开所有RDP连接,可直接使用以下批处理逻辑嵌入业务触发流程:

@echo off
for /f "tokens=3 delims= " %%i in ('query session ^| findstr rdp-tcp') do (
    reset session %%i /server:localhost
)

若仅需要断开指定用户的RDP连接,在findstr参数后追加用户名即可,例如findstr "rdp-tcp testuser"将仅断开用户testuser的RDP连接。

内容的提问来源于stack exchange,提问作者hellsmenser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.12 16:15:51