ПРЕДУПРЕЖДЕНИЕНеобходимо помнить, что dll исполняется в адресном пространстве процесса, который ее вызывает. Если dll спровоцирует исключительную ситуацию, тогда, если не обработать ошибку, работа процесса будет прекращена. Процесс Winlogon.exe очень чувствителен к таким вещам. При возникновении ошибки он покажет синий экран смерти, а в случае наличия соответствующих настроек перегрузит систему. Поэтому настойчиво рекомендуется тестировать программу на виртуальном компьютере. |
Для этого зайдем в реестр и отыщем ключ:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
Создадим в нем подключ MyNotify и значения, как показано на рисунке ниже.
Рисунок 1.
Для удобства поместим файл Notify.dll по указанному пути. После перезагрузки системы приложение начнет создавать логи.
ПРИМЕЧАНИЕЕсли логи не создаются, проверьте, не используется ли Notify.dll другим процессом (если файл не удается переименовать – значит, кто-то его использует). Если Notify.dll используется, а логов нет, скорее всего, неправильно задано одно из значений в названиях функций-обработчиков, или такие функции не экспортируются динамической библиотекой. Если Notify.dll не используется, проверьте, правильно ли задан ключ DllName с названием библиотеки. Возможно, библиотека не зарегистрирована в системе, или не может быть загружена. |
Winlogon notification package может пригодиться в совершенно неожиданных местах. Например, если из системной службы необходимо получить имена пользователей, работающих в системе. Все, что нужно – это написать и зарегистрировать в системе dll, которая по запросу передаст данные в службу (или сама будет передавать эти данные в ответ на некоторые нужные события).
Надеюсь, что данная статья расширит знания читателя об интерфейсах Winlogon, а также поможет использовать полученные знания на практике.