我正在尝试编写一个远程桌面客户端,以便在我的测试环境中使用。
目标是首次登录计算机(新虚拟机),让用户配置文件和第一次登录期间发生的所有事情发生,然后注销。
我能够以用户身份使用MSTSCLib / AxMsRdpClient6NotSafeForScripting接口创建会话并登录到计算机。
现在我想使用WTSLogoffSession函数将用户从计算机上注销(而不仅仅是断开连接)。但是这个函数需要会话ID,我无法弄清楚如何在RdpClient接口中运行当前会话。
在哪里/如何在您创建的RDP会话中找到会话的会话ID?看起来这应该是一个属性或在某处很容易找到的东西,但我已经在任何地方找到它。
我认为,当给出一个简单的解决方案时,我会打击自己,但到目前为止它是在避免我。
由于
答案 0 :(得分:0)
我认为不可能从RDP控制接口获取会话ID(我已经尝试过,并且希望被证明是错误的!)。您最好的选择可能是使用WTSEnumerateSessions和WTSQuerySessionInformation(使用WTSInfoClass = WTSSessionInfo从WTSINFO structure获取登录时间)或使用类似的包装器库在服务器上查找最新会话Cassia(如果您使用的是.NET语言,并且不想处理P / Invokes)。