Condividi tramite


Gestori di notifica amministrativi

Lo snap-in MMC Utenti e computer di Microsoft Active Directory fornisce un meccanismo per consentire ai componenti di ricevere notifiche quando l'utente elimina, rinomina, sposta o modifica le proprietà di un oggetto utilizzando lo snap-in. Il componente che riceve le notifiche è noto come "gestore di notifica".

Ciò è utile quando più oggetti sono collegati insieme e devono esistere all'interno dello stesso contenitore. Se uno degli oggetti collegati viene spostato, viene fornita una notifica al gestore di notifica e il gestore di notifica può spostare gli altri oggetti collegati nella stessa cartella.

Quando viene eseguita una delle operazioni e viene installato uno o più gestori di notifica, lo snap-in Utenti e computer visualizzerà una finestra di dialogo di conferma che elenca i gestori di notifica e una casella di controllo per ogni gestore. Se è selezionata la casella di controllo per un gestore, il gestore riceve una notifica. Se la casella di controllo non è selezionata, il gestore non riceve una notifica.

Implementazione di un gestore di notifica

Un gestore di notifica è un oggetto COM implementato come server in-proc. Il gestore di notifica deve implementare l'interfaccia IDsAdminNotifyHandler.

Quando si verifica un evento che causerà una notifica, lo snap-in Utenti e computer enumera i gestori di notifica registrati e crea ognuno di essi usando CLSID per il gestore. Dopo aver creato il gestore, lo snap-in chiama il metodo IDsAdminNotifyHandler::Initialize. Il metodo Initialize fornisce lo snap-in con gli eventi che il gestore deve ricevere.

Se l'evento è uno che deve essere inviato al gestore di notifica, lo snap-in chiama il metodo IDsAdminNotifyHandler::Begin. Il metodo Begin fornisce al gestore l'evento che si verifica, i dati sull'oggetto su cui si sta verificando l'evento e, a seconda dell'evento, i dati su ciò che l'oggetto diventerà. Il metodo Begin fornisce anche lo snap-in con il testo da visualizzare per il gestore nella finestra di dialogo di conferma.

Quando è stato chiamato il metodoBeginper ogni gestore, lo snap-in visualizza la finestra di dialogo di conferma. La finestra di dialogo di conferma richiede all'utente di selezionare i gestori che riceveranno la notifica. Se l'utente preme il pulsante di Nessuna nella finestra di dialogo di conferma, nessuno dei gestori riceve una notifica. Se l'utente preme il pulsante di push, ognuno dei gestori selezionati nella finestra di dialogo di conferma riceve la notifica. Lo snap-in invia la notifica al gestore chiamando il metodo IDsAdminNotifyHandler::Notify.

Dopo che tutti i gestori sono stati informati, lo snap-in chiama il metodo IDsAdminNotifyHandler::End. Il metodo End viene sempre chiamato, anche se il metodo Notify non viene chiamato.

Registrazione di un gestore di notifica nel Registro di sistema di Windows

Come tutti i server COM, un gestore di notifica deve essere registrato nel Registro di sistema di Windows. Il gestore viene registrato con la chiave seguente:

HKEY_CLASSES_ROOT - CLSID - <CLSID>

< > CLSID è la rappresentazione di stringa del CLSID generato dalla funzioneStringFromCLSID. Nella chiave>CLSID<è presente una chiave InProcServer32 che identifica l'oggetto come server in-proc a 32 bit. Nella chiave di InProcServer32, il percorso della DLL viene specificato nel valore predefinito e il modello di threading viene specificato nel valore ThreadingModel. Tutti i gestori di notifica devono usare il modello di threading apartment.

Registrazione di un gestore di notifica con un server Active Directory

All'interno di Servizi di dominio Active Directory, la registrazione del gestore delle notifiche è specifica di una sola impostazione locale. Se il gestore di notifica si applica a tutte le impostazioni locali, deve essere registrato nel displaySpecifier oggetto in tutti i sottocontenitori delle impostazioni locali nel contenitore DisplaySpecifiers. Se il gestore di notifica viene localizzato per determinate impostazioni locali, viene registrato nel displaySpecifier oggetto nel sottocontenitore delle impostazioni locali. Per altre informazioni sul contenitore e le impostazioni locali DisplaySpecifiers, vedere Identificatori di visualizzazione e Contenitore DisplaySpecifiers.

I gestori di notifica vengono registrati nel attributo dsUIAdminNotification nel contenitore DS-UI-Default-Settings. Si tratta di un valore stringa Unicode multivalore in cui ogni valore richiede il formato seguente:

<order number>,<CLSID>

"<numero di ordine>" è un numero senza segno che rappresenta la posizione del gestore nella finestra di dialogo di conferma. Quando viene visualizzata la finestra di dialogo di conferma, i valori vengono ordinati usando un confronto tra il numero di ordine di ogni valore<>". Se più di un valore ha lo stesso "<numero di ordine>", tali gestori vengono visualizzati nell'ordine in cui vengono letti dal server Active Directory. Un valore non esistente, ovvero uno non usato da altri valori nella proprietà , "<numero di ordine>" deve essere usato, se possibile. Non esiste una posizione iniziale prestabilita e le lacune possono essere visualizzate nella sequenza "<numero di ordine>".

"<CLSID>" è la rappresentazione di stringa del CLSID prodotto dalla funzione StringFromCLSID.