代码之家  ›  专栏  ›  技术社区  ›  Troels Larsen

检测活动RDP会话

  •  2
  • Troels Larsen  · 技术社区  · 6 年前

    我需要在我的应用程序中实现一个死人开关。如果应用程序是从rdp运行的,我需要在它失去与远程客户端的连接时采取行动。

    我知道当我在RDP中运行时

    GetSystemMetrics(SystemMetric.SM_REMOTESESSION)
    

    但当客户端在未注销的情况下关闭时,会话将继续。这是我想要应对的场景,但我不知道如何检测客户端断开连接。我需要知道是否有一个活动的rdp用户。

    我可以通过观察RDP端口来找到远程端点,但是如果认为可以在非默认端口上设置,那么如果存在更好的解决方案,我希望避免这种解决方案。

    我更喜欢一个不特定于winforms、wpf、uwp等的解决方案。如果它也能与.net core一起工作,那么就可以获得额外的积分。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Damien_The_Unbeliever    6 年前

    不是.NET核心解决方案,而是Windows API解决方案。有会话更改通知,您可以通过 WTSRegisterSessionNotification (同样 unregister 稍后)。

    这些通知随后会在windows消息循环中传递,因此您需要运行一个通知。(winforms和wpf可以,并且有特定的机制允许您执行 custom message handling )

    当会话被锁定或断开连接时,您将收到通知。