【问题标题】:Is there a way to detect remote desktop session events in NPLogonNotify有没有办法在 NPLogonNotify 中检测远程桌面会话事件
【发布时间】:2012-04-26 11:07:35
【问题描述】:

与现有会话的远程桌面连接会触发网络提供商中的 NPLogonNotify。但是有没有办法我可以确定它是登录事件还是连接到现有会话的事件?

【问题讨论】:

    标签: windows login remote-desktop winlogon terminal-services


    【解决方案1】:

    LsaGetLogonSessionData 从登录会话 ID 返回终端服务会话 ID。因此,您可以尝试使用 WTSConnectState 调用 WTSQuerySessionInformation。运气好的话,结果会区分您关注的两种情况。

    如果不是,并且如果您在从 NPLogonSession 返回之前不需要知道答案,您可以使用WTSRegisterSessionNotification 观察与调用 NPLogonSession 相关的终端服务会话会发生什么。

    我相信如果用户连接到现有会话,来自 NPLogonNotify 的终端服务会话将返回空闲或侦听状态。此外,调用 NPLogonNotify 中的登录会话将被关闭。您可以通过调用LsaEnumerateLogonSessions 枚举登录会话。

    如果用户收到一个新的会话,我相信来自 NPLogonNotify 的调用中的同一个终端服务会话将被使用,因此它将进入活动状态。通常还会启动一个或多个进程,这些进程与调用 NPLogonNotify 的登录会话 ID 相关联。您可以通过将GetTokenInformation 与 TokenStatistics 查询类一起使用来确定与进程关联的登录会话,如 MSDN 词汇表中的"logon identifier" 中所述。

    还有一个需要注意的复杂情况:如果用户是管理员,并且启用了 UAC,则会对 NPLogonNotify 进行两次调用,一个与受限用户令牌相关联,另一个与提升的用户令牌相关联。这适用于本地和远程登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多