【问题标题】:Trigger an event when system locks/unlocks on Windows XP在 Windows XP 上系统锁定/解锁时触发事件
【发布时间】:2010-09-28 11:58:19
【问题描述】:

请帮助我找到一种方法来跟踪我的 WinXP 机器上的锁定/解锁时间。我试过 Windows 调度程序 - 它只记录登录,而不是锁定。有什么选择吗?

在 Miranda 的源代码中,我看到了通过 IdleObject 跟踪器实现的,但是这种方式太长了。可能是 AutoIt 脚本?时间跟踪程序(免费软件)?

【问题讨论】:

    标签: windows scripting time tracking python-idle


    【解决方案1】:

    如果您有 Windows 服务,您可以通过 OnSessionChange 方法获得登录/注销/锁定/解锁事件的通知。在 C# 中,你会这样做:

     protected override void OnSessionChange(SessionChangeDescription changeDescription)
     {
            switch (changeDescription.Reason)
            {
                case SessionChangeReason.SessionLogon:
                    //Logon
                    break;
                case SessionChangeReason.SessionLogoff:
                    //Logoff
                    break;
                case SessionChangeReason.RemoteConnect:
                    //Remote Connect
                    break;
                case SessionChangeReason.RemoteDisconnect:
                    //Remote Disconnect
                    break;
                case SessionChangeReason.SessionLock:
                    //lock
                    break;
                case SessionChangeReason.SessionUnlock:
                    //Unlock
                    break;
                default:
                    break;
            }
     }
    

    【讨论】:

    • 感谢您的提示!我可以在脚本中使用这个 sn-p,例如VB?
    • 您需要创建一个 Windows 服务来获取 OnSessionChange 挂钩,因此您不能直接在 VB 脚本中使用此技术。不过,您可以在 VB 中实现 Windows 服务。
    【解决方案2】:

    我使用eventtriggers.exe 中内置的 Windows XP 解决了这个问题,它基本上监视一个 Windows 事件日志的更改,并允许您根据指定的条件触发内容。由于它是一个日志监视器,它通常会在短暂的延迟后触发

    例如以下代码将调用一个 BAT 文件,其参数取决于登录/注销相关事件(然而,不幸的是,这不仅是实际的用户登录/注销,还包括系统相关事件和计算机锁定事件)

    eventtriggers.exe /create /tr "logout_occured" /l SECURITY  /eid 538 /tk "cmd /c c:\lockhandler.bat LOGOUT_OCCURED"
    eventtriggers.exe /create /tr "login_occured" /l SECURITY  /eid 528 /tk "cmd /c  c:\lockhandler.bat LOGIN_OCCURED"
    

    【讨论】:

    • 我在 Windows XP 机器上执行了上述命令,但批处理文件仅针对解锁事件而不是锁定事件执行/调用。我不确定锁定事件的事件 ID,因为事件查看器中没有锁定事件的日志条目。欢迎提出任何建议。
    • Vijaysing - 事件在安全日志中,结果我的意思是登录/注销事件(更正了我上面的帖子)。这些有时由锁定/解锁以及实际登录/注销触发。最后,我不再真正使用 eventtrigger 解决方案,因为我看不到是什么用户触发了事件(可以在事件查看器中看到)
    • @Brummo 你现在的解决方案是什么?
    • 恐怕我再也没有自动化解决方案了,因为它无法正常工作,因为我试图实现的目标。由于我的需求不是那么大,我只是求助于手动检查事件日志。
    【解决方案3】:

    检查 CanHandleSessionChange 属性是否为 True ? 这将从设计器视图中检查 -> 属性

    然后使用 OnSessionChange 函数

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2012-09-09
      • 1970-01-01
      • 2010-10-16
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多