Abrufen der DACL eines Objekts

Die Sicherheitsbeschreibung eines Objekts kann eine DACL (Discretionary Access Control List) enthalten. Eine DACL enthält null oder mehr Zugriffssteuerungseinträge (ACCESS Control Entries, ACEs), die die Benutzer und Gruppen identifizieren, die auf das Objekt zugreifen können. Wenn eine DACL leer ist (d. h., sie enthält null ACEs), wird kein Zugriff explizit gewährt, sodass der Zugriff implizit verweigert wird. Wenn der Sicherheitsdeskriptor eines Objekts jedoch über keine DACL verfügt, ist das Objekt nicht geschützt, und alle Benutzer haben vollständigen Zugriff.

Um die DACL eines Objekts abzurufen, müssen Sie besitzer des Objekts sein oder über READ _ CONTROL-Zugriff auf das Objekt verfügen.

Verwenden Sie die IADsSecurityDescriptor-Schnittstelle, um die DACL eines Verzeichnisobjekts abzurufen und festzulegen. Mit C++ gibt die IADsSecurityDescriptor::get _ DiscretionaryAcl-Methode einen IDispatch-Zeiger zurück. Rufen Sie QueryInterface für diesen IDispatch-Zeiger auf, um eine IADsAccessControlList-Schnittstelle abzurufen, und verwenden Sie die Methoden auf dieser Schnittstelle, um auf die einzelnen ACEs in der DACL zuzugreifen. Das Verfahren zum Ändern einer DACL wird unter Festlegen von Zugriffsrechten für ein Objektbeschrieben.

Um die ACEs aufzulisten, verwenden Sie die IADsAccessControlList::get _ _ NewEnum-Methode. Die -Methode gibt einen IUnknown-Zeiger zurück. Rufen Sie QueryInterface für diesen IUnknown-Zeiger auf, um eine IEnumVARIANT-Schnittstelle abzurufen. Verwenden Sie die IEnumVARIANT::Next-Methode, um die ACEs in der ACL aufzuzählen. Jeder ACE wird als VARIANT zurückgegeben, der einen IDispatch-Zeiger enthält (der vt-Member ist VT _ DISPATCH). Rufen Sie QueryInterface für diesen IDispatch-Zeiger auf, um eine IADsAccessControlEntry-Schnittstelle für den ACE abzurufen. Sie können die Methoden der IADsAccessControlEntry-Schnittstelle verwenden, um die Komponenten eines ACE festzulegen oder abzurufen.

Weitere Informationen zu DACLs und ACEs finden Sie in den folgenden Themen im Platform Software Development Kit (SDK).