Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测活动RDP会话_C#_.net_Pinvoke_Remote Desktop - Fatal编程技术网

C# 检测活动RDP会话

C# 检测活动RDP会话,c#,.net,pinvoke,remote-desktop,C#,.net,Pinvoke,Remote Desktop,我需要在我的应用程序中实现一个死人开关。如果应用程序是从RDP运行的,我需要在它与远程客户端失去连接时采取行动 我知道何时使用RDP运行 GetSystemMetrics(SystemMetric.SM_REMOTESESSION) 但当客户端关闭而未注销时,会话将继续。这是我想要做出反应的场景,但我不知道如何检测客户端断开连接。我需要知道是否有一个活跃的RDP用户 我可以通过观察RDP端口潜在地找到远程端点,但由于think可能设置在非默认端口上,如果存在更好的解决方案,我希望避免使用此解决

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

我知道何时使用RDP运行

GetSystemMetrics(SystemMetric.SM_REMOTESESSION)
但当客户端关闭而未注销时,会话将继续。这是我想要做出反应的场景,但我不知道如何检测客户端断开连接。我需要知道是否有一个活跃的RDP用户

我可以通过观察RDP端口潜在地找到远程端点,但由于think可能设置在非默认端口上,如果存在更好的解决方案,我希望避免使用此解决方案


我更喜欢一个不特定于WinForms、WPF、UWP等的解决方案。如果它也能与.NET Core一起使用,则会获得额外的积分。

不是.NET Core解决方案,而是windows API解决方案。有会话更改通知,您可以通过(以及类似的更高版本)选择加入

然后,这些通知将在windows消息循环中传递,因此您需要运行一个通知。(WinForms和WPF可以,并且有特定的机制允许您执行)


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

可能会有所帮助。注意,并不总是建议使用SM_REMOTESESSION:不幸的是,WTSRegisterSessionNotification需要覆盖WndProc的功能,而我在控制台应用程序中。我希望有更好的解决方案,因为我认为应该关闭服务。