Инициировать событие, когда система блокирует / разблокирует в Windows XP - PullRequest
1 голос
/ 28 сентября 2010

Пожалуйста, помогите мне найти способ отслеживать время блокировки / разблокировки на моем компьютере с WinXP. Я пробовал планировщик Windows - он только регистрирует логины, а не блокировки. Есть альтернативы?

В исходном коде Миранды я видел реализацию через трекер IdleObject, но этот путь слишком длинный. Может быть скрипт AutoIt? Программа отслеживания времени (бесплатная)?

Ответы [ 3 ]

1 голос
/ 28 сентября 2010

Если у вас есть служба 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;
        }
 }
0 голосов
/ 06 марта 2018

Убедитесь, что свойство CanHandleSessionChange имеет значение True или нет? Это будет проверено в конструкторе -> Свойство

Затем используйте функцию OnSessionChange

0 голосов
/ 05 октября 2012

Я решил эту проблему с помощью встроенной в 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"
...