Реферат: Winlogon notification package. Теория и практика
В операционных системах линии Windows NT диалоговая поддержка входа в систему реализована с помощью Winlogon. Он предоставляет целый ряд полезных интерфейсов. Наиболее известным является GINA (Graphical Identification and Authentication dll), который обычно используется, когда нужно изменить стандартный способ аутентификации. Например, реализовать возможность входа в систему по отпечаткам пальцев, сетчатке глаза или по электронной карточке. Менее известным, но не менее полезным является Winlogon notification package. Этот интерфейс реализует возможность обрабатывать события на вход и выход пользователей, включение и выключение операционной системы и некоторые другие. К сожалению, последний интерфейс реализован только в операционных системах Win2000 и выше.
Теория
Winlogon notification package – это dll-библиотеки, которые получают и обрабатывают события, сгенерированные Winlogon.
Logon – генерируется при входе пользователя в систему посредством Winlogon + GINA (через консоль, терминал и т. д.). Сообщения не будут приходить, если пользователь зашел посредством LogonUser.
Logoff – генерируется при выходе пользователя из системы (если он вошел в систему посредством Winlogon + GINA).
Startup – генерируется при запуске системы, а также при присоединении терминального клиента.
Shutdown – генерируется перед выключением системы, а также при отсоединении терминального клиента.
StartScreenSaver – генерируетсяпризапуске screen saver-а. В обработчике этого события запрещено показывать интерфейс пользователя.
StopScreenSaver – генерируется при остановке screen saver-а. В обработчике этого события запрещено показывать интерфейс пользователя.
Lock – генерируется, когда пользователь блокирует рабочую станцию.
Unlock – генерируется, когда пользователь разблокировал рабочую станцию, или когда системный администратор снял блокировку, заставив пользователя выйти из системы.
StartShell – генерируется после того, как пользователь зашел в систему и сетевые соединения были установлены.
Для реализации Winlogon notification package необходимо следующее.
Сначала нужно создать динамическую библиотеку, которая будет импортировать набор функций-обработчиков событий. Прототип этих функций должен строиться по шаблону:
VOID FunctionName (PWLX_NOTIFICATION_INFO pInfo); |
Как видите, вся информация о данных события хранится в структуре WLX_NOTIFICATION_INFO.
typedef struct _WLX_NOTIFICATION_INFO { ULONG Size ; ULONG Flags ; PWSTR UserName ; PWSTR Domain ; PWSTR WindowStation ; HANDLE hToken ; HDESK hDesktop ; PFNMSGECALLBACK pStatusCallback; } WLX_NOTIFICATION_INFO, * PWLX_NOTIFICATION_INFO ; |
В этой структуре:
Size – определяет размер структуры в байтах;
Flags – поле зарезервировано и должно устанавливаться в 0;
UserName – строка, определяющая имя текущего пользователя. Если событие случилось до входа пользователя в систему, то это поле равно NULL;
--> ЧИТАТЬ ПОЛНОСТЬЮ <--