Freigeben über


ConvertToAutoInheritPrivateObjectSecurity-Funktion (securitybaseapi.h)

Die ConvertToAutoInheritPrivateObjectSecurity-Funktion konvertiert einen Sicherheitsdeskriptor und seine Zugriffssteuerungslisten (Access Control Lists , ACLs) in ein Format, das die automatische Weitergabe von vererbbaren Zugriffssteuerungseinträgen (ACEs) unterstützt.

Syntax

BOOL ConvertToAutoInheritPrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in]           PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  [in, optional] GUID                 *ObjectType,
  [in]           BOOLEAN              IsDirectoryObject,
  [in]           PGENERIC_MAPPING     GenericMapping
);

Parameter

[in, optional] ParentDescriptor

Ein Zeiger auf den Sicherheitsdeskriptor für den übergeordneten Container des Objekts. Wenn kein übergeordneter Container vorhanden ist, ist dieser Parameter NULL.

[in] CurrentSecurityDescriptor

Ein Zeiger auf den aktuellen Sicherheitsdeskriptor des -Objekts.

[out] NewSecurityDescriptor

Ein Zeiger auf eine Variable, die einen Zeiger auf den neu zugeordneten selbstrelativen Sicherheitsdeskriptor empfängt. Es liegt in der Verantwortung des Aufrufers, die DestroyPrivateObjectSecurity-Funktion aufzurufen, um diesen Sicherheitsdeskriptor frei zu geben.

[in, optional] ObjectType

Ein Zeiger auf eine GUID-Struktur , die den Typ des Objekts identifiziert, das dem CurrentSecurityDescriptor-Parameter zugeordnet ist. Wenn das Objekt keine GUID aufweist, muss dieser Parameter NULL sein.

[in] IsDirectoryObject

Wenn TRUE, ist das neue Objekt ein Container und kann andere Objekte enthalten. Wenn FALSE, ist das neue Objekt kein Container.

[in] GenericMapping

Ein Zeiger auf eine GENERIC_MAPPING-Struktur , die die Zuordnung von jedem generischen Recht zu bestimmten Rechten für das Objekt angibt.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion ungleich null zurück.

Wenn die Funktion fehlschlägt, wird null zurückgegeben. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die ConvertToAutoInheritPrivateObjectSecurity-Funktion versucht zu bestimmen, ob die ACEs in der daCL (Discretionary Access Control List ) und der Systemzugriffssteuerungsliste (SACL) des aktuellen Sicherheitsdeskriptors vom übergeordneten Sicherheitsdeskriptor geerbt wurden. Die Funktion übergibt den ParentDescriptor-Parameter an die CreatePrivateObjectSecurityEx-Funktion , um ACLs abzurufen, die nur geerbte ACEs enthalten. Anschließend werden diese ACEs mit den ACEs im ursprünglichen Sicherheitsdeskriptor verglichen, um zu bestimmen, welche der ursprünglichen ACEs geerbt wurden. Die ACEs müssen nicht 1:1 übereinstimmen. Für instance kann ein ACE, der Lese- und Schreibzugriff auf einen Vertrauensempfänger ermöglicht, zwei ACEs entsprechen: einem ACE, der Lesezugriff zulässt, und einem ACE, der Schreibzugriff zulässt.

Alle ACEs im ursprünglichen Sicherheitsdeskriptor, die den acEs entsprechen, die vom übergeordneten Sicherheitsdeskriptor geerbt wurden, werden mit dem Flag INHERITED_ACE gekennzeichnet und dem neuen Sicherheitsdeskriptor hinzugefügt. Alle anderen ACEs im ursprünglichen Sicherheitsdeskriptor werden dem neuen Sicherheitsdeskriptor als nicht inheritierte ACEs hinzugefügt.

Wenn die ursprüngliche DACL über keine geerbten ACEs verfügt, legt die Funktion das flag SE_DACL_PROTECTED in den Kontrollbits des neuen Sicherheitsdeskriptors fest. Ebenso wird das flag SE_SACL_PROTECTED festgelegt, wenn keines der ACEs in der SACL geerbt wird.

Für DACLs, die acEs geerbt haben, sortiert die Funktion die ACEs in zwei Gruppen um. Die erste Gruppe verfügt über ACEs, die direkt auf das Objekt angewendet wurden. Die zweite Gruppe hat ACEs geerbt. Durch diese Reihenfolge wird sichergestellt, dass nicht inheritierte ACEs Vorrang vor geerbten ACEs haben. Weitere Informationen finden Sie unter Reihenfolge von ACEs in einer DACL.

Die Funktion legt die SE_DACL_AUTO_INHERITED und SE_SACL_AUTO_INHERITED Flags in den Steuerbits des neuen Sicherheitsdeskriptors fest.

Die -Funktion ändert nicht die Reihenfolge der zugriffsgeschützten ACEs in Bezug auf zugriffsverwehrte ACEs in der DACL, da dies die Semantik des resultierenden Sicherheitsdeskriptors ändern würde. Wenn die Funktion die DACL nicht konvertieren kann, ohne die Semantik zu ändern, bleibt die DACL unverändert und legt das flag SE_DACL_PROTECTED fest.

Der neue Sicherheitsdeskriptor hat denselben Besitzer und dieselbe primäre Gruppe wie der ursprüngliche Sicherheitsdeskriptor.

Der neue Sicherheitsdeskriptor entspricht dem ursprünglichen Sicherheitsdeskriptor, sodass der Aufrufer keine Zugriffsrechte oder Berechtigungen benötigt, um den Sicherheitsdeskriptor auf das neue Format zu aktualisieren.

Diese Funktion funktioniert mit ACL_REVISION und ACL_REVISION_DS ACLs.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile securitybaseapi.h (Einschließen von Windows.h)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

Client/Server-Access Control

Client-/Server-Access Control-Funktionen

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID