AxMSTSCLib注销

时间:2017-03-29 10:14:28

标签: c# rdp logoff

我目前正在开发一种使用RDP协议使用远程桌面会话的工具。我能够连接和断开远程桌面,但我想为其添加注销功能。我在各种文档中看得很远,但还没有成功。

我目前正在使用AxMsRdpClient6NotSafeForScripting,因为我还没有能够使用常规的AxMsRdpClient6而没有使用NotSafeForScripting(或者其他任何版本)。所以问题可能是这不支持注销,我想必须使用AxMsRdpClient6版本,我猜...

非常感谢任何帮助或建议。

我目前正在使用的代码的演示可以在下面找到

        AxMsRdpClient6NotSafeForScripting rdp = new AxMsRdpClient6NotSafeForScripting();
        host.Child = rdp;
        rdp.CreateControl();
        rdp.Server = serverName;
        rdp.UserName = username;
        IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx();
        IMsRdpClient10 client = (IMsRdpClient10)rdp.GetOcx();
        client.DesktopHeight = 750;
        client.DesktopWidth = 750;
        secured.ClearTextPassword = pwd;

        rdp.Connect();

1 个答案:

答案 0 :(得分:1)

这与您实际使用的ActiveX控件版本无关 - 控件没有注销方法,因为它不是RDP协议公开的操作(至少就我记忆所知)。

可以远程注销您的RDP会话,但您必须使用Win32 WTSLogoffSession函数(https://msdn.microsoft.com/en-us/library/aa383836(v=vs.85).aspx)来执行此操作。不幸的是,从C#做起来有点痛苦,因为你需要处理PInvoke和编组结构才能找到合适的会话,但它至少应该是可能的。