我需要在我的应用程序中实现死人开关。如果该应用程序是从RDP运行的,那么在失去与远程客户端的连接时我需要采取行动。
我知道我何时通过使用RDP运行
GetSystemMetrics(SystemMetric.SM_REMOTESESSION)
但是当客户端关闭但未退出时,会话将继续。这是我要应对的情况,但是我不知道如何检测客户端断开连接。我需要知道是否有活动的RDP用户。
通过观察RDP端口,我可能会找到远程端点,但是考虑到可能会在非默认端口上进行设置,因此,如果存在更好的解决方案,我想避免使用此解决方案。
我更喜欢不特定于WinForms,WPF,UWP等的解决方案。如果它也可以与.NET Core一起使用,则可以得到加分。
答案 0 :(得分:0)
不是.NET Core解决方案,而是Windows API。您可以通过WTSRegisterSessionNotification
(以及以后的unregister)选择加入会话更改通知。
这些通知随后在Windows消息循环中传递,因此您需要运行一个。 (WinForms和WPF都可以,并且有一些特定的机制可以让您执行custom message handling)
然后,当会话被锁定或断开连接时,您会收到通知。