| ПРЕДУПРЕЖДЕНИЕНеобходимо помнить, что 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, а также поможет использовать полученные знания на практике.