Creazione di descrittori di sicurezza per i 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 dell'interfaccia IADsSecurityDescriptor a tale oggetto. Tenere presente che l'ID classe è CLSID_SecurityDescriptor.
  2. Utilizzare 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 le licenze DACL e SACL vengono ereditate dall'oggetto dal contenitore padre.
  4. Usare CoCreateInstance per creare l'oggetto COM ADSI per il DACL per il nuovo descrittore di sicurezza e ottenere un puntatore dell'interfaccia IADsAccessControlList a tale oggetto. Tenere presente che l'ID classe è CLSID_AccessControlList.
  5. Per ogni ACE da aggiungere a DACL, usare CoCreateInstance per creare l'oggetto COM ADSI per il nuovo ACE e ottenere un puntatore dell'interfaccia IADsAccessControlEntry a tale oggetto. Tenere presente che l'ID classe è CLSID_AccessControlEntry.
  6. Per ogni ACE da aggiungere al DACL, impostare le proprietà di 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 al DACL, utilizzare il metodo QueryInterface nell'oggetto IADsAccessControlEntry per ottenere un puntatore IDispatch . Il metodo IADsAccessControlList::AddAce richiede un puntatore dell'interfaccia IDispatch all'ACE.
  8. Per ogni ACE da aggiungere al DACL, usare IADsAccessControlList::AddAce per aggiungere la nuova ace all'elenco DACL. Tenere presente che l'ordine degli ACL all'interno dell'ACL 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 Ordine degli ACL in un 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 daCL. Per altre informazioni sulle licenze DACL, vedere DACL Null e DACLs vuoti.
  11. Usare 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 di VARIANT uguale al puntatore IDispatch .
  13. Ottenere un puntatore all'interfaccia IADs 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.