Freigeben über


Abrufen der DACL eines Objekts

Die Sicherheitsbeschreibung eines Objekts kann eine daCL (Discretionary Access Control List) enthalten. Eine DACL enthält keine 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 keine ACEs), wird kein Zugriff explizit gewährt, sodass der Zugriff implizit verweigert wird. Wenn der Sicherheitsdeskriptor eines Objekts jedoch keine DACL aufweist, ist das Objekt nicht geschützt, und jeder hat vollständigen Zugriff.

Um die DACL eines Objekts abzurufen, müssen Sie der Besitzer des Objekts sein oder READ_CONTROL Zugriff auf das Objekt haben.

Verwenden Sie die IADsSecurityDescriptor-Schnittstelle , um die DACL eines Verzeichnisobjekts abzurufen und festzulegen. Bei Verwendung von 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 Objekt beschrieben.

Verwenden Sie zum Aufzählen der ACEs 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 aufzulisten. 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).