Erstellen von Sicherheits Deskriptoren für neue Verzeichnisobjekte

Sie können ADSI verwenden, um eine Sicherheits Beschreibung zu erstellen und Sie als ntSecurityDescriptor -Eigenschaft eines neuen Objekts festzulegen, oder Sie verwenden, um die ntSecurityDescriptor -Eigenschaft eines vorhandenen Objekts zu ersetzen.

So erstellen Sie eine Sicherheits Beschreibung für ein Objekt:

  1. Verwenden Sie cokreateinstance , um das ADSI COM-Objekt für die neue Sicherheits Beschreibung zu erstellen, und rufen Sie einen IADsSecurityDescriptor -Schnittstellen Zeiger auf dieses Objekt ab. Beachten Sie, dass die Klassen-ID CLSID _ securityDescriptor ist.
  2. Verwenden Sie die IADsSecurityDescriptor::p UT- _ Besitzer Methode, um den Besitzer des Objekts festzulegen. Der Vertrauens nehmer ist ein Benutzer, eine Gruppe oder ein anderer Sicherheits Prinzipal. Eine Anwendung sollte den Wert aus der entsprechenden Eigenschaft aus dem Benutzer-oder Gruppen Objekt des Vertrauens nehmers verwenden, auf den der ACE angewendet werden soll.
  3. Verwenden Sie die IADsSecurityDescriptor::p UT- _ Steuerungs Methode, um zu steuern, ob DACLs und SACLs von dem Objekt von seinem übergeordneten Container geerbt werden.
  4. Verwenden Sie cokreateinstance , um das ADSI COM-Objekt für die DACL für die neue Sicherheits Beschreibung zu erstellen, und rufen Sie einen IADsAccessControlList -Schnittstellen Zeiger auf dieses Objekt ab. Beachten Sie, dass die Klassen-ID CLSID _ AccessControlList ist.
  5. Verwenden Sie für jeden ACE, der der DACL hinzugefügt werden soll, cokreateinstance , um das ADSI COM-Objekt für den neuen ACE zu erstellen, und rufen Sie einen IADsAccessControlEntry -Schnittstellen Zeiger auf dieses Objekt ab. Beachten Sie, dass die Klassen-ID CLSID _ AccessControlEntry ist.
  6. Legen Sie für jeden ACE, der der DACL hinzugefügt werden soll, die Eigenschaften des ACE mithilfe der Eigenschafts Methoden des IADsAccessControlEntry -Objekts des ACE fest. Weitere Informationen zu den Eigenschaften, die für einen ACE festgelegt werden, finden Sie unter Festlegen von Zugriffsrechten für ein Objekt.
  7. Verwenden Sie für jeden ACE, der der DACL hinzugefügt werden soll, die QueryInterface -Methode für das IADsAccessControlEntry -Objekt, um einen IDispatch -Zeiger zu erhalten. Die IADsAccessControlList:: addace -Methode erfordert einen IDispatch -Schnittstellen Zeiger auf den ACE.
  8. Verwenden Sie für jeden ACE, der der DACL hinzugefügt werden soll, IADsAccessControlList:: addace , um den neuen ACE der DACL hinzuzufügen. Beachten Sie, dass sich die Reihenfolge der ACEs innerhalb der ACL auf die Auswertung des Zugriffs auf das Objekt auswirken kann. Der richtige Zugriff auf das Objekt erfordert möglicherweise, dass Sie eine neue ACL erstellen, die ACEs aus der vorhandenen ACL in der richtigen Reihenfolge der neuen ACL hinzufügen und dann die vorhandene ACL in der Sicherheits Beschreibung durch die neue ACL ersetzen. Weitere Informationen finden Sie unter Reihenfolge von ACEs in einer DACL.
  9. Führen Sie die Schritte 4-8 aus, um die SACL für den neuen Sicherheits Deskriptor zu erstellen.
  10. Verwenden Sie die IADsSecurityDescriptor::p UT-Methode " _ diskretionaryacl ", um die DACL festzulegen. Weitere Informationen zu DACLs finden Sie unter null-DACLs und leere DACLs.
  11. Verwenden Sie die IADsSecurityDescriptor::p UT _ SystemAcl -Methode, um die SACL festzulegen.
  12. Konvertieren Sie das IADsSecurityDescriptor -Objekt in eine Variante , indem Sie mithilfe der QueryInterface -Methode des IADsSecurityDescriptor -Objekts eine IDispatch -Schnittstelle abrufen. Legen Sie dann den VT -Member der Variante auf VT _ Dispatch fest, und legen Sie den pdispVal -Member der Variante gleich dem IDispatch -Zeiger fest.
  13. Rufen Sie einen IADs -Schnittstellen Zeiger auf das-Objekt ab.
  14. Verwenden Sie die IADs::P UT -Methode mit "ntSecurityDescriptor" und die oben erstellte Variante , um die neue Sicherheits Beschreibung in den Eigenschaften Cache zu schreiben.
  15. Verwenden Sie die IADs:: SetInfo -Methode, um die-Eigenschaft für das Objekt im Verzeichnis zu aktualisieren.