Creazione di descrittori di sicurezza per nuovi oggetti directory

È possibile usare ADSI per creare un descrittore di sicurezza e impostarlo come proprietà nTSecurityDescriptor di un nuovo oggetto oppure usarlo per sostituire la proprietà nTSecurityDescriptor di un oggetto esistente.

Per creare un descrittore di sicurezza per un oggetto:

  1. Usare CoCreateInstance per creare l'oggetto COM ADSI per il nuovo descrittore di sicurezza e ottenere un puntatore all'interfaccia IADsSecurityDescriptor a tale oggetto. Tenere presente che l'ID classe è CLSID_SecurityDescriptor.
  2. Usare il metodo IADsSecurityDescriptor::p ut_Owner per impostare il proprietario dell'oggetto. Il trustee è un utente, un gruppo o un'altra entità di sicurezza. Un'applicazione deve usare il valore della proprietà appropriata dall'oggetto utente o gruppo del trustee a cui applicare l'ace.
  3. Utilizzare il metodo IADsSecurityDescriptor::p ut_Control per controllare se i DACL e gli elenchi SACL vengono ereditati dall'oggetto dal relativo contenitore padre.
  4. Usare CoCreateInstance per creare l'oggetto COM ADSI per il DACL per il nuovo descrittore di sicurezza e ottenere un puntatore all'interfaccia IADsAccessControlList a tale oggetto. Tenere presente che l'ID classe è CLSID_AccessControlList.
  5. Per ogni ACE da aggiungere all'elenco DACL, usare CoCreateInstance per creare l'oggetto COM ADSI per il nuovo ACE e ottenere un puntatore all'interfaccia IADsAccessControlEntry a tale oggetto. Tenere presente che l'ID classe è CLSID_AccessControlEntry.
  6. Per ogni ACE da aggiungere all'elenco DACL, impostare le proprietà dell'ace usando i metodi di proprietà dell'oggetto IADsAccessControlEntry di ACE. Per altre informazioni sulle proprietà da impostare su un ace, vedere Impostazione dei diritti di accesso per un oggetto.
  7. Per ogni ACE da aggiungere all'elenco DACL, utilizzare il metodo QueryInterface nell'oggetto IADsAccessControlEntry per ottenere un puntatore IDispatch . Il metodo IADsAccessControlList::AddAce richiede un puntatore all'interfaccia IDispatch all'ACE.
  8. Per ogni ACE da aggiungere all'elenco DACL, usare IADsAccessControlList::AddAce per aggiungere il nuovo ACE all'elenco DACL. Tenere presente che l'ordine degli ACL all'interno dell'elenco di controllo di accesso può influire sulla valutazione dell'accesso all'oggetto. L'accesso corretto all'oggetto potrebbe richiedere di creare un nuovo ACL, aggiungere gli ACL dall'ACL esistente nell'ordine corretto al nuovo ACL e quindi sostituire l'ACL esistente nel descrittore di sicurezza con il nuovo ACL. Per altre informazioni, vedere Order of ACEs in a DACL.For more information, see Order of ACEs in a DACL.
  9. Seguire i passaggi da 4 a 8 per creare sacl per il nuovo descrittore di sicurezza.
  10. Usare il metodo IADsSecurityDescriptor::p ut_DiscretionaryAcl per impostare l'elenco DACL. Per altre informazioni sugli elenchi DACL, vedere DACLs Null e Empty DACLs.
  11. Utilizzare il metodo IADsSecurityDescriptor::p ut_SystemAcl per impostare SACL.
  12. Convertire l'oggetto IADsSecurityDescriptor in un valore VARIANT usando il metodo QueryInterface dell'oggetto IADsSecurityDescriptor per ottenere un'interfaccia IDispatch . Impostare quindi il membro vt di VARIANT su VT_DISPATCH e impostare il membro pdispVal dell'oggetto VARIANT uguale al puntatore IDispatch .
  13. Ottenere un puntatore all'interfaccia ID all'oggetto .
  14. Usare il metodo IADs::P ut con "nTSecurityDescriptor" e variant creato in precedenza per scrivere il nuovo descrittore di sicurezza nella cache delle proprietà.
  15. Utilizzare il metodo IADs::SetInfo per aggiornare la proprietà nell'oggetto nella directory.