Как обнаружить событие входа в Windows? - PullRequest
3 голосов
/ 19 сентября 2009

Как вы обнаруживаете событие входа в Windows?

А как инициировать вход пользователя из службы Windows?

Я пытаюсь написать фрагмент кода, который будет определять события входа в систему и автоматически регистрировать другой.

Ответы [ 5 ]

2 голосов
/ 21 сентября 2009

Если вы разрабатываете для Windows 2000 / XP, вы можете создать пакет уведомлений Winlogon, используя библиотеки JWA и Delphi. Они сделали это чрезвычайно легко:

http://blog.delphi -jedi.net / 2008/05/27 / Winlogon-уведомление-пакет /

Это также позволяет вам разместить форму на экране CTRL + ALT + DEL, если вы хотите. Эта форма работает под профилем SYSTEM.

2 голосов
/ 19 сентября 2009

Как обнаружить событие входа в Windows?

Если какой-либо механизм существует, он может быть в WMI. Существует ряд классов WMI. В частности Win32_LogonSession; который связан с Win32_Account через Win32_LoggedonUser). Если события создания поддерживаются для Win32_LogonSession, это будет очень эффективный метод.

А как инициировать вход пользователя из службы Windows?

API LogonUser позволяет создавать новый пользовательский токен, который затем можно использовать для потоков или процессов. Использование CreateProcessWithLogonW (и аналогичных) позволяет создать имя пользователя и пароль для создания процесса под другой учетной записью (по сути LogonUser плюс CreateProcessWithTokenW).

1 голос
/ 12 марта 2010

Пакет уведомлений Winlogon удален из Vista.

Использовать WTSRegisterSessionNotification или Служба уведомлений о системных событиях (SENS) . Тем не менее, вы не можете войти в систему пользователя в интерактивном режиме s.t. диалоговое окно входа в систему удалено, и вместо него отображается рабочий стол пользователя. Это делается winlogon с использованием некоторых ключей реестра. LogonUser просто дает вам токен, который вы можете использовать для олицетворения пользователя.

1 голос
/ 21 сентября 2009
1 голос
/ 19 сентября 2009

Вы можете обнаружить вход пользователя, например, отслеживая журнал событий. Как объяснил Ричард, вы также можете запустить процесс с определенным пользователем.

Однако, похоже, что вы пытаетесь сделать что-то еще, то есть поменять имя входа вошедшего в систему пользователя. Я не думаю, что это возможно.

...