使用 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文件已损坏 远程连接无法启动”原因及如何解决?