相关疑难解决方法(0)

如何使.NET Windows服务检测登录,注销和切换用户事件?

我需要在Windows XP SP3上跟踪用户中的当前用户(使用控制台的用户).

我尝试了以下方法:

  • Microsoft.Win32.SystemEvents.SessionSwitch:适用于单个登录/注销事件,但无法检测到切换用户.

    如果发生以下情况:

    1. userA登录
    2. userA切换用户
    3. userB登录
    4. userB注销
    5. userA恢复会话

    SystemEvents.SessionSwitch未检测到事件3和4

  • 监控"安全"事件日志:事件不一致并且无序到达.例如,如果重播上面的列表,我会在恢复会话后收到事件ID 528(登录),然后是userA的两个538(Logoff).检查event.TimeGenerated没有帮助.如果在SecPol.msc上禁用审核,则此方法也不起作用.

  • P /调用WTSRegisterSessionNotification:工作正常.我必须创建一个隐藏的表单,覆盖其WndProc来处理WM_WTSSESSION_CHANGE消息,然后调用WTSQuerySessionInformation来获取与该事件关联的用户名.这种方法看起来太复杂了,有没有更简单的方法?

编辑:

  • 每n毫秒调用WTSGetActiveConsoleSessionId也可以,但我正在寻找一个基于事件的方法.

.net c# windows-xp

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1

windows-xp ×1