Я пытаюсь создать службу уведомлений Winlogon, которая получает сообщение о входе в систему, а затем копирует ntuser.dat (реестр) из центрального расположения (как это делает перемещаемый профиль), а при выходе из системы это отменяет (копирует ntuser.dat в centralместо нахождения).Я уже сделал службу, и она получает сообщение SENS, но я думаю, что сообщения SENS принимаются ПОСЛЕ загрузки ntuser.dat;поэтому я получаю «сообщение об использовании файла», пытающееся взаимодействовать с ntuser.dat.Я думаю, что SENS не способ сделать это, но старый способ hklm \ xxx \ x \ x \ winlogon \ notify не работает на Windows Vista и UP.Поэтому я заблудился здесь.
Как мне сделать службу или DLL, чтобы остановить процесс входа в систему, пока я не переместу ntuser.dat в профиль пользователя?
Заранее спасибо.
После долгих исследований (документация очень старая и устаревшая) я понял, почему SENS (служба уведомлений о системных событиях) не работает для этой задачи.
Служба SENS - это один уровеньниже служб уведомлений Winlogon, фактически, сама SENS является службой, зарегистрированной в Winlogon для получения уведомлений, а затем SENS информирует все службы, которые реализуют этот интерфейс COM второго уровня, об изменениях в состояниях сеансов, таких как вход в систему., Выход из системы и т. Д.
Служба профилей пользователей (ProfSvc) также является службой, которая, подобно SENS, получает уведомления от Winlogon и отвечает за выполнение политик и перемещений NTUSER.DAT и другие вопросы, связанные среестр и профиль пользователя.
Исследуя немного больше, я обнаружил, что там яРаздел реестра s, который управляет поведением этих служб:
HKLM \ System \ CurrectControlSet \ Control \ Winlogon \ Notifications \ Configurations
И порядок загрузки или вызова этих служб включен:
HKLM \ System \ CurrectControlSet \ Control \ Winlogon \ Notifications \ Configurations \ Default
В этом ключе есть несколько REG_SZ свозможные события, такие как: вход в систему, выход из системы, EndShell, Unlock и т. д., а содержимое - строка, разделенная запятыми, с названием службы, которую необходимо загрузить для уведомления.
Я создаю службу и добавляю реестрключи и может заставить winlogon попытаться вызвать мою службу, но процесс входа в систему был остановлен с такой ошибкой:
Идентификатор события: 6001 Описание: подписчик уведомлений winlogon не прошел событие уведомления.
Идентификатор события: 6004 Описание: подписчик уведомлений winlogon не прошел критическое событие уведомления.
Я не знаю, что ответить или какие COM-объекты реализовать для получения события и ответа..
Мой сервис уже выполняется до службы профилей, поэтому, если я могу ответить на Winlogon, мне удалось решить CustomСлужба перемещаемого профиля для Windows.
Кто-нибудь?