Beveiligingsdescriptors maken voor nieuwe mapobjecten

U kunt ADSI gebruiken om een beveiligingsdescriptor te maken en deze in te stellen als een nieuw object nTSecurityDescriptor eigenschap of deze gebruiken om de eigenschap van een bestaand object nTSecurityDescriptor te vervangen.

Een beveiligingsdescriptor voor een object maken:

  1. Gebruik CoCreateInstance om het ADSI COM-object te maken voor de nieuwe beveiligingsdescriptor en een IADsSecurityDescriptor interfaceaanwijzer naar dat object te krijgen. Houd er rekening mee dat de klasse-id is CLSID_SecurityDescriptor.
  2. Gebruik de methode IADsSecurityDescriptor::put_Owner om de eigenaar van het object in te stellen. De trustee is een gebruiker, groep of andere beveiligingshoofdpersoon. Een toepassing moet de waarde van de juiste eigenschap van het gebruikers- of groepsobject van de beheerder gebruiken waarop de ACE moet worden toegepast.
  3. Gebruik de methode IADsSecurityDescriptor::put_Control om te beheren of DACL’s en SACL’s door het object worden geërfd van de bovenliggende container.
  4. Gebruik CoCreateInstance om het ADSI COM-object voor de DACL te maken voor de nieuwe beveiligingsdescriptor en een IADsAccessControlList interfaceaanwijzer naar dat object te krijgen. Houd er rekening mee dat de klasse-id is CLSID_AccessControlList.
  5. Voor elke ACE die aan de DACL moet worden toegevoegd, gebruikt u CoCreateInstance om het ADSI COM-object voor de nieuwe ACE te maken en een IADsAccessControlEntry interfaceaanwijzer naar dat object te krijgen. Houd er rekening mee dat de klasse-id is CLSID_AccessControlEntry.
  6. Stel voor elke ACE die moet worden toegevoegd aan de DACL de eigenschappen van de ACE in met behulp van de eigenschapsmethoden van de IADsAccessControlEntry-object van de ACE. Zie Toegangsrechten instellen op een objectvoor meer informatie over de eigenschappen die moeten worden ingesteld op een ACE.
  7. Gebruik voor elke ACE die u aan de DACL wilt toevoegen de methode QueryInterface op het IADsAccessControlEntry-object om een IDispatch- aanwijzer op te halen. De methode IADsAccessControlList::AddAce vereist een IDispatch interfaceaanwijzer naar de ACE.
  8. Om elke ACE aan de DACL toe te voegen, gebruik IADsAccessControlList::AddAce om de nieuwe ACE toe te voegen aan de DACL. Houd er rekening mee dat de volgorde van de ACEs binnen de ACL van invloed kan zijn op de evaluatie van de toegang tot het object. Voor de juiste toegang tot het object moet u mogelijk een nieuwe ACL maken, de ACL's uit de bestaande ACL in de juiste volgorde toevoegen aan de nieuwe ACL en vervolgens de bestaande ACL in de beveiligingsdescriptor vervangen door de nieuwe ACL. Zie Volgorde van ACE's in een DACLvoor meer informatie.
  9. Volg stap 4-8 om de SACL te maken voor de nieuwe beveiligingsdescriptor.
  10. Gebruik de methode IADsSecurityDescriptor::put_DiscretionaryAcl om de DACL in te stellen. Zie Null-DACL's en Lege DACL'svoor meer informatie over DACL's.
  11. Gebruik de methode IADsSecurityDescriptor::put_SystemAcl om de SACL in te stellen.
  12. Converteer de IADsSecurityDescriptor-object naar een VARIANT- met behulp van de methode QueryInterface van de IADsSecurityDescriptor-object om een IDispatch--interface te verkrijgen. Stel vervolgens het vt lid van de VARIANT in op VT_DISPATCH en stel de pdispVal lid van de VARIANT gelijk aan de IDispatch-aanwijzer.
  13. Verkrijg een IADs-interfaceaanwijzer naar het object.
  14. Gebruik de methode IADs::Put met 'nTSecurityDescriptor' en de hierboven gemaakte VARIANT om de nieuwe beveiligingsdescriptor naar de eigenschappencache te schrijven.
  15. Gebruik de methode IADs::SetInfo om de eigenschap van het object in de map bij te werken.