使用 MSTSCLib 时如何查找远程桌面会话 ID

Posted

技术标签:

【中文标题】使用 MSTSCLib 时如何查找远程桌面会话 ID【英文标题】:How to find the Remote Deskop SessionID when using MSTSCLib 【发布时间】:2012-06-13 17:01:20 【问题描述】:

我正在尝试编写一个用于我的测试环境的远程桌面客户端。

目标是首次登录计算机(新虚拟机),让用户配置文件和第一次登录期间发生的所有事情发生,然后注销。

我能够使用 MSTSCLib/AxMsRdpClient6NotSafeForScripting 接口创建会话并以用户身份登录到计算机。

现在我想使用 WTSLogoffSession 函数将用户从计算机上注销(不仅仅是断开连接)。但是这个函数需要 Session ID,我不知道如何为 RdpClient 接口中运行的当前会话找到它。

您在哪里/如何在您创建的 RDP 会话中找到该会话的会话 ID?看起来这应该是一个属性或在某个地方很容易找到的东西,但我在任何地方都找到了它。

当给出一个简单的解决方案时,我假设我会打自己的头,但到目前为止它一直在避开我。

谢谢

【问题讨论】:

【参考方案1】:

我认为不可能从 RDP 控制接口获取会话 ID(我已经尝试过并且希望被证明是错误的!)。您最好的选择可能是使用WTSEnumerateSessions 和WTSQuerySessionInformation(使用WTSInfoClass = WTSSessionInfo 从WTSINFO structure 获取登录时间)或使用像Cassia 这样的包装库(如果您正在使用 .NET 语言并且不想处理 P/Invokes)。

【讨论】:

我拒绝接受这一点,因为和你一样,我希望你会被证明是错误的。看起来我们都很失望。 是的...:/我猜MS将会话ID视为与客户端无关的服务器端实现细节。

以上是关于使用 MSTSCLib 时如何查找远程桌面会话 ID的主要内容,如果未能解决你的问题,请参考以下文章

保持远程桌面会话“活动”[关闭]

使用XP客户端访问远程桌面WEB主机时,提示“此RDP文件已损坏 远程连接无法启动”原因及如何解决?

windows 远程桌面连接如何切换会话

windows server 2012 如何设置远程登录同时多用户登录

如何设置电脑允许多个远程桌面连接

怎么取消远程桌面连接,关闭的时候弹出“断开连接终端服务会话”框