Programy obsługi powiadomień administracyjnych
Przystawka MMC Użytkownicy i komputery usługi Microsoft Active Directory udostępnia mechanizm umożliwiający składnikom odbieranie powiadomień, gdy użytkownik usuwa, zmienia nazwy, przenosi lub zmienia właściwości obiektu przy użyciu przystawki. Składnik, który odbiera powiadomienia, jest nazywany "procedurą obsługi powiadomień".
Jest to przydatne, gdy wiele obiektów jest połączonych razem i musi istnieć w tym samym kontenerze. Jeśli jeden z połączonych obiektów zostanie przeniesiony, do programu obsługi powiadomień zostanie dostarczone powiadomienie, a program obsługi powiadomień może przenieść inne połączone obiekty do tego samego folderu.
Po wykonaniu jednej operacji i zainstalowaniu co najmniej jednego programu obsługi powiadomień przystawka Użytkownicy i komputery wyświetli okno dialogowe potwierdzenia z listą programów obsługi powiadomień i pole wyboru dla każdego programu obsługi. Jeśli zaznaczono pole wyboru obsługi, program obsługi zostanie powiadomiony. Jeśli pole wyboru nie jest zaznaczone, program obsługi nie jest powiadamiany.
Implementowanie programu obsługi powiadomień
Procedura obsługi powiadomień jest obiektem COM zaimplementowanym jako serwer w proc. Procedura obsługi powiadomień musi implementować interfejs IDsAdminNotifyHandler.
Gdy wystąpi zdarzenie, które spowoduje powiadomienie, przystawka Użytkownicy i komputery wylicza zarejestrowane programy obsługi powiadomień i tworzy każdy z nich przy użyciu identyfikatora CLSID dla programu obsługi. Po utworzeniu programu obsługi przystawka wywołuje metodę IDsAdminNotifyHandler::Initialize. Metoda Initialize dostarcza przystawkę z zdarzeniami, które powinien otrzymać program obsługi.
Jeśli zdarzenie jest zdarzeniem, które powinno zostać wysłane do programu obsługi powiadomień, przystawka wywołuje metodę IDsAdminNotifyHandler::Begin. Metoda Begin udostępnia program obsługi z występującym zdarzeniem, dane dotyczące obiektu, na podstawie którego występuje zdarzenie, oraz, w zależności od zdarzenia, dane dotyczące tego, co stanie się obiektem. Metoda Begin udostępnia również przystawkę z tekstem, który powinien być wyświetlany dla programu obsługi w oknie dialogowym potwierdzenia.
Po wywołaniu metody Begin dla każdego programu obsługi przystawka wyświetla okno dialogowe potwierdzenia. Okno dialogowe potwierdzenia wyświetla użytkownikowi monit o wybranie procedur obsługi, które otrzymają powiadomienie. Jeśli użytkownik naciśnie przycisk Brak naciśnięcia w oknie dialogowym potwierdzenia, żaden z programów obsługi nie zostanie powiadomiony. Jeśli użytkownik naciśnie przycisk Tak, każdy z programów obsługi wybranych w oknie dialogowym potwierdzenia otrzyma powiadomienie. Przystawka wysyła powiadomienie do programu obsługi, wywołując metodę IDsAdminNotifyHandler::Notify.
Po powiadomieniu wszystkich procedur obsługi przystawka wywołuje metodę IDsAdminNotifyHandler::End. Metoda End jest zawsze wywoływana, nawet jeśli metoda Notify nie jest wywoływana.
Rejestrowanie programu obsługi powiadomień w rejestrze systemu Windows
Podobnie jak wszystkie serwery COM, program obsługi powiadomień musi być zarejestrowany w rejestrze systemu Windows. Procedura obsługi jest rejestrowana w ramach następującego klucza:
HKEY_CLASSES_ROOT - CLSID - <CLSID>
<CLSID> to reprezentacja ciągu CLSID, która jest utworzona przez funkcję StringFromCLSID. W <klucz> CLSID istnieje klucz InProcServer32, który identyfikuje obiekt jako serwer 32-bitowy w proc. W kluczu InProcServer32 lokalizacja biblioteki DLL jest określona w wartości domyślnej, a model wątkowania jest określony w wartości ThreadingModel. Wszystkie programy obsługi powiadomień muszą używać modelu wątkowania Apartment.
Rejestrowanie programu obsługi powiadomień za pomocą serwera usługi Active Directory
W usługach Active Directory Domain Services rejestracja programu obsługi powiadomień jest specyficzna dla jednego ustawienia regionalnego. Jeśli program obsługi powiadomień ma zastosowanie do wszystkich ustawień regionalnych, musi zostać zarejestrowany w kontenerze displaySpecifier we wszystkich podkontainerach ustawień regionalnych w kontenerze DisplaySpecifiers. Jeśli program obsługi powiadomień jest zlokalizowany dla określonych ustawień regionalnych, jest zarejestrowany w displaySpecifier obiektu w podkontainer tego ustawienia regionalnego. Aby uzyskać więcej informacji na temat kontenera DisplaySpecifiers i ustawień regionalnych, zobacz Specyfikatory wyświetlania i DisplaySpecifiers Container.
Programy obsługi powiadomień są rejestrowane w ramach atrybutu dsUIAdminNotification w kontenerze DS-UI-Default-Settings. Jest to wartość ciągu Unicode z wieloma wartościami, w której każda wartość wymaga następującego formatu:
<order number>,<CLSID>
"<numer zamówienia>" jest niepodpisaną liczbą, która reprezentuje pozycję programu obsługi w oknie dialogowym potwierdzenia. Po wyświetleniu okna dialogowego potwierdzenia wartości są sortowane przy użyciu porównania wartości "<numer zamówienia>". Jeśli więcej niż jedna wartość ma tę samą wartość "<numer zamówienia>", te programy obsługi są wyświetlane w kolejności odczytu z serwera usługi Active Directory. Nieistniejący, czyli taki, który nie jest używany przez inne wartości we właściwości "<numer zamówienia>" należy użyć, jeśli to możliwe. Nie ma określonej pozycji początkowej, a luki mogą pojawić się w sekwencji "<numer zamówienia>".
Parametr "<CLSID>" jest reprezentacją ciągu CLSID w postaci wygenerowanej przez funkcję StringFromCLSID.