在Windows XP上系统锁定/解锁时触发事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows XP上系统锁定/解锁时触发事件相关的知识,希望对你有一定的参考价值。

请帮我找到一种方法来跟踪我的WinXP机器上的锁定/解锁时间。我试过Windows调度程序 - 它只记录登录,而不是锁定。任何替代品?

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

答案

如果您有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函数

以上是关于在Windows XP上系统锁定/解锁时触发事件的主要内容,如果未能解决你的问题,请参考以下文章

在互斥锁解锁时取消阻止定时接收

应用程序暂停时如何在 iPhone 上获取屏幕锁定/解锁事件?

Android:不活动后,Expo Notification 未显示在锁定屏幕上

锁定屏幕上的透明活动

sh 解锁屏幕。此命令发送解锁设备上锁定屏幕的事件。它可以与上面的电源按钮命令结合使用

当资源组上有删除锁时,如何使用 Powershell 停止 Azure 数据工厂的存储事件触发器?