Erstellen von Sicherheitsbeschreibungen für neue Verzeichnisobjekte
Sie können ADSI verwenden, um einen Sicherheitsdeskriptor zu erstellen und als nTSecurityDescriptor-Eigenschaft eines neuen Objekts festzulegen oder ihn zu verwenden, um die nTSecurityDescriptor-Eigenschaft eines vorhandenen Objekts zu ersetzen.
So erstellen Sie einen Sicherheitsdeskriptor für ein Objekt:
- Verwenden Sie CoCreateInstance , um das ADSI-COM-Objekt für den neuen Sicherheitsdeskriptor zu erstellen und einen IADsSecurityDescriptor-Schnittstellenzeiger auf dieses Objekt abzurufen. Beachten Sie, dass die Klassen-ID CLSID_SecurityDescriptor ist.
- Verwenden Sie die IADsSecurityDescriptor::p ut_Owner-Methode , um den Besitzer des Objekts festzulegen. Der Treuhänder ist ein Benutzer, eine Gruppe oder ein anderer Sicherheitsprinzipal. Eine Anwendung sollte den Wert aus der entsprechenden Eigenschaft des Benutzer- oder Gruppenobjekts des Treuhänders verwenden, auf den der ACE angewendet werden soll.
- Verwenden Sie die IADsSecurityDescriptor::p ut_Control-Methode , um zu steuern, ob DACLs und SACLs vom übergeordneten Container vom Objekt geerbt werden.
- Verwenden Sie CoCreateInstance , um das ADSI-COM-Objekt für die DACL für den neuen Sicherheitsdeskriptor zu erstellen und einen IADsAccessControlList-Schnittstellenzeiger auf dieses Objekt abzurufen. Beachten Sie, dass die Klassen-ID CLSID_AccessControlList ist.
- Für jeden ACE, der der DACL hinzugefügt werden soll, verwenden Sie CoCreateInstance , um das ADSI COM-Objekt für das neue ACE zu erstellen und einen IADsAccessControlEntry-Schnittstellenzeiger auf dieses Objekt abzurufen. Beachten Sie, dass die Klassen-ID CLSID_AccessControlEntry ist.
- Legen Sie für jeden ACE, der der DACL hinzugefügt werden soll, die Eigenschaften des ACE mithilfe der Eigenschaftenmethoden des IADsAccessControlEntry-Objekts des ACE fest. Weitere Informationen zu den Eigenschaften, die auf einem ACE festgelegt werden sollen, finden Sie unter Festlegen von Zugriffsrechten für ein Objekt.
- 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 abzurufen. Die IADsAccessControlList::AddAce-Methode erfordert einen IDispatch-Schnittstellenzeiger auf den ACE.
- Für jeden ACE, der der DACL hinzugefügt werden soll, verwenden Sie IADsAccessControlList::AddAce , um der DACL den neuen ACE hinzuzufügen. Beachten Sie, dass sich die Reihenfolge der ACEs innerhalb der Zugriffssteuerungsliste auf die Auswertung des Zugriffs auf das Objekt auswirken kann. Für den richtigen Zugriff auf das Objekt müssen Sie möglicherweise eine neue ACL erstellen, die ACEs aus der vorhandenen ACL in der richtigen Reihenfolge der neuen ACL hinzufügen und dann die vorhandene ACL im Sicherheitsdeskriptor durch die neue ACL ersetzen. Weitere Informationen finden Sie unter Reihenfolge der ACEs in einer DACL.
- Führen Sie die Schritte 4 bis 8 aus, um die SACL für den neuen Sicherheitsdeskriptor zu erstellen.
- Verwenden Sie die IADsSecurityDescriptor::p ut_DiscretionaryAcl-Methode , um die DACL festzulegen. Weitere Informationen zu DACLs finden Sie unter Null-DACLs und leere DACLs.
- Verwenden Sie die IADsSecurityDescriptor::p ut_SystemAcl-Methode , um die SACL festzulegen.
- Konvertieren Sie das IADsSecurityDescriptor-Objekt in ein VARIANT-Objekt , indem Sie die QueryInterface-Methode des IADsSecurityDescriptor-Objekts verwenden, um eine IDispatch-Schnittstelle abzurufen. Legen Sie dann den vt-Member des VARIANT-Elements auf VT_DISPATCH und den pdispVal-Member des VARIANT-Elements auf den IDispatch-Zeiger fest.
- Rufen Sie einen IADs-Schnittstellenzeiger auf das -Objekt ab.
- Verwenden Sie die IADs::P ut-Methode mit "nTSecurityDescriptor" und den oben erstellten VARIANT,um den neuen Sicherheitsdeskriptor in den Eigenschaftencache zu schreiben.
- Verwenden Sie die IADs::SetInfo-Methode , um die -Eigenschaft für das -Objekt im Verzeichnis zu aktualisieren.