Поделиться через


обработчики уведомлений Администратор istrative

Оснастка MMC в Microsoft Пользователи и компьютеры Active Directory предоставляет механизм, позволяющий компонентам получать уведомления при удалении, переименовании, перемещении или изменении свойств объекта с помощью оснастки. Компонент, который получает уведомления, называется обработчиком уведомлений.

Это полезно, если несколько объектов связаны друг с другом и должны существовать в одном контейнере. Если один из связанных объектов перемещается, уведомление предоставляется обработчику уведомлений, а обработчик уведомлений может переместить другие связанные объекты в ту же папку.

При выполнении одной или нескольких операций и установке одного или нескольких обработчиков уведомлений оснастка "Пользователи и компьютеры" отобразит диалоговое окно подтверждения, в котором перечислены обработчики уведомлений и поле проверка для каждого обработчика. Если выбрано поле проверка обработчика, обработчик будет уведомлен. Если поле проверка не выбрано, обработчик уведомляется.

Реализация обработчика уведомлений

Обработчик уведомлений — это COM-объект, реализованный как сервер в proc. Обработчик уведомлений должен реализовать идентификаторы Администратор NotifyHandler.

При возникновении события, вызывающего уведомление, оснастка "Пользователи и компьютеры" перечисляет зарегистрированные обработчики уведомлений и создает каждую из них с помощью CLSID для обработчика. После создания обработчика оснастка вызывает идентификаторы Администратор NotifyHandler::Initialize. Метод Initialize предоставляет оснастку с событиями, которые должен получать обработчик.

Если событие должно быть отправлено обработчику уведомлений, оснастка вызывает идентификаторы Администратор NotifyHandler::Begin. Метод Begin предоставляет обработчик событиям, данные об объекте, на который происходит событие, и в зависимости от события данные о том, что станет объектом. Метод Begin также предоставляет оснастку с текстом, который должен отображаться для обработчика в диалоговом окне подтверждения.

При вызове метода Begin для каждого обработчика оснастка отображает диалоговое окно подтверждения. Диалоговое окно подтверждения предложит пользователю выбрать, какие обработчики получат уведомление. Если пользователь нажимает кнопку "Нет " в диалоговом окне подтверждения, ни один из обработчиков не уведомляется. Если пользователь нажимает кнопку "Да ", каждый обработчик, выбранный в диалоговом окне подтверждения, получает уведомление. Оснастка отправляет уведомление обработчику путем вызова идентификаторов Администратор NotifyHandler::Notify.

После уведомления всех обработчиков оснастки вызывает идентификаторы Администратор NotifyHandler::End. Метод End всегда вызывается, даже если метод Notify не вызывается.

Регистрация обработчика уведомлений в реестре Windows

Как и все COM-серверы, обработчик уведомлений должен быть зарегистрирован в реестре Windows. Обработчик регистрируется в следующем ключе:

HKEY_CLASSES_ROOT - CLSID - <CLSID>

<CLSID — это строковое представление CLSID, созданное функцией StringFromCLSID.> <В разделе ключа CLSID> есть ключ InProcServer32, определяющий объект как 32-разрядный сервер в proc. В разделе ключа InProcServer32 расположение библиотеки DLL указывается в значении по умолчанию, а модель потоков указывается в значении ThreadingModel. Все обработчики уведомлений должны использовать модель потоков квартиры .

Регистрация обработчика уведомлений на сервере Active Directory

В службах домен Active Directory регистрация обработчика уведомлений зависит от одного языкового стандарта. Если обработчик уведомлений применяется ко всем языковым стандартам, он должен быть зарегистрирован в объекте displaySpecifier во всех подконтейнерах языкового стандарта в контейнере DisplaySpecifiers . Если обработчик уведомлений локализован для определенного языкового стандарта, он регистрируется в объекте displaySpecifier в подконтейнере языкового стандарта. Дополнительные сведения о контейнере и языковых стандартах DisplaySpecifiers см. в разделе "Описатели отображения" и "Контейнер DisplaySpecifiers".

Обработчики уведомлений регистрируются в атрибуте dsUI Администратор Notification в контейнере DS-UI-Default-Параметры. Это многозначное строковое значение Юникода, где каждое значение требует следующего формата:

<order number>,<CLSID>

"<Номер заказа" — это неподписанный номер>, представляющий позицию обработчика в диалоговом окне подтверждения. При отображении диалогового окна подтверждения значения сортируются по сравнению с "порядковым номером>" каждого значения<. Если несколько значений имеют одинаковый "<номер> заказа", эти обработчики отображаются в том порядке, в котором они считываются с сервера Active Directory. Если это возможно, то есть не используется другими значениями в свойстве "<порядковый номер>". Нет предписанной начальной позиции, и пробелы могут отображаться в последовательности "<номер> заказа".

<ClSID — это строковое представление CLSID>, созданного функцией StringFromCLSID.