1

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

我目前正在使用 AxMsRdpClient6NotSafeForScripting,因为在没有 NotSafeForScripting(或与此相关的任何其他版本)的情况下,我还无法使其与常规 AxMsRdpClient6 一起使用。所以问题可能是这不支持注销,我必须使用 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();
4

1 回答 1

1

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

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

于 2017-04-01T01:38:15.017 回答