如何知道我的应用程序是否使用远程桌面控制?

问题描述

事件SystemmEvents.SessionSwitch

的描述

在当前登录用户已更改时发生。

SessionSwitchEventArgs具有属性Reason,该属性可以告诉您事件的原因。

如果远程桌面连接或断开连接,则会引发此事件。

  • 启动远程桌面时:原因== SessionSwitchReason.RemoteConnect
  • 关闭远程桌面时:原因== SessionSwitchReason.Remotedisconnect

class viewmodel
{
    public viewmodel()
    {
        SystemEvents.SessionSwitch += SessionSwitched;
        IsRemoteSession = SystemParameters.IsRemoteSession;

        Logger.LogTrace("viewmodel constructed. Remote Session {0}",this.IsRemoteSession);
    }

    public bool IsRemoteSession {get; set;}

    private void SessionSwitched(object sender,SessionSwitchEventArgs e)
    {
        this.IsRemoteSession = SystemParameters.IsRemoteSession;
        Logger.LogTrace("Session Switch. Reason: {0}; Remote Session {1}"
                         e.Reason,this.IsRemoteSession);
}

如果我在没有远程桌面的情况下启动程序,则属性IsRemoteSession为false。如果我启动远程桌面,则会引发该事件,但该属性仍为false。

但是,如果我使用远程descktop启动程序,则IsRemoteSession为true。如果我关闭远程桌面,则会引发该事件,但是该属性保持为真。

我也按照建议的here尝试了GetSystemMetrics,但这也没有给出正确的值,这是可以预期的,因为SystemParameters使用GetSystemMetrics来获取值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)