【发布时间】:2010-09-28 11:58:19
【问题描述】:
请帮助我找到一种方法来跟踪我的 WinXP 机器上的锁定/解锁时间。我试过 Windows 调度程序 - 它只记录登录,而不是锁定。有什么选择吗?
在 Miranda 的源代码中,我看到了通过 IdleObject 跟踪器实现的,但是这种方式太长了。可能是 AutoIt 脚本?时间跟踪程序(免费软件)?
【问题讨论】:
标签: windows scripting time tracking python-idle
请帮助我找到一种方法来跟踪我的 WinXP 机器上的锁定/解锁时间。我试过 Windows 调度程序 - 它只记录登录,而不是锁定。有什么选择吗?
在 Miranda 的源代码中,我看到了通过 IdleObject 跟踪器实现的,但是这种方式太长了。可能是 AutoIt 脚本?时间跟踪程序(免费软件)?
【问题讨论】:
标签: windows scripting time tracking python-idle
如果您有 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;
}
}
【讨论】:
我使用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"
【讨论】:
检查 CanHandleSessionChange 属性是否为 True ? 这将从设计器视图中检查 -> 属性
然后使用 OnSessionChange 函数
【讨论】: