1

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

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

4

3 回答 3

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;
        }
 }
于 2010-09-28T12:02:10.027 回答
0

我使用 Windows XP 内置的eventtriggers.exe解决了它,它基本上监视 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"
于 2012-10-05T15:22:08.817 回答
0

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

然后使用 OnSessionChange 函数

于 2018-03-06T07:08:52.880 回答