Freigeben über


CreatePrivateObjectSecurity-Funktion (securitybaseapi.h)

Die CreatePrivateObjectSecurity-Funktion weist einen selbstrelativen Sicherheitsdeskriptor für ein neues privates Objekt zu und initialisiert diesen. Ein geschützter Server ruft diese Funktion auf, wenn er ein neues privates Objekt erstellt.

Verwenden Sie die CreatePrivateObjectSecurityEx-Funktion, um die Objekttyp-GUID des neuen Objekts anzugeben oder zu steuern, wie Zugriffssteuerungseinträge (Access Control Entries, ACEs) vererbt werden.

Syntax

BOOL CreatePrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR CreatorDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewDescriptor,
  [in]           BOOL                 IsDirectoryObject,
  [in, optional] HANDLE               Token,
  [in]           PGENERIC_MAPPING     GenericMapping
);

Parameter

[in, optional] ParentDescriptor

Ein Zeiger auf die Sicherheitsbeschreibung für das übergeordnete Verzeichnis, in dem ein neues Objekt erstellt wird. Wenn kein übergeordnetes Verzeichnis vorhanden ist, kann dieser Parameter NULL sein.

[in, optional] CreatorDescriptor

Ein Zeiger auf eine Sicherheitsbeschreibung, die vom Ersteller des Objekts bereitgestellt wird. Wenn der Ersteller des Objekts nicht explizit Sicherheitsinformationen für das neue Objekt übergibt, soll dieser Parameter NULL sein.

[out] NewDescriptor

Ein Zeiger auf eine Variable, die einen Zeiger auf den neu zugewiesenen selbstrelativen Sicherheitsdeskriptor empfängt. Der Aufrufer muss die DestroyPrivateObjectSecurity-Funktion aufrufen, um diese Sicherheitsbeschreibung frei zu geben.

[in] IsDirectoryObject

Gibt an, ob es sich bei dem neuen Objekt um einen Container handelt. Der Wert TRUE gibt an, dass das Objekt andere Objekte enthält, z. B. ein Verzeichnis.

[in, optional] Token

Ein Handle für das Zugriffstoken für den Clientprozess , in dessen Auftrag das Objekt erstellt wird. Wenn es sich um ein Identitätswechseltoken handelt, muss es sich auf der SecurityIdentification-Ebene oder höher sein. Eine vollständige Beschreibung der Identitätswechselebene von SecurityIdentification finden Sie im SECURITY_IMPERSONATION_LEVEL aufgezählten Typs.

Ein Clienttoken wird verwendet, um Standardsicherheitsinformationen für das neue Objekt abzurufen, z. B. den Standardbesitzer, die primäre Gruppe und die diskretionäre Zugriffssteuerungsliste. Das Token muss für TOKEN_QUERY Zugriff geöffnet sein.

Wenn alle folgenden Bedingungen zutreffen, muss das Handle zusätzlich zu TOKEN_QUERY Zugriff für TOKEN_DUPLICATE Zugriff geöffnet werden.

  • Das Tokenhandle bezieht sich auf ein primäres Token.
  • Die Sicherheitsbeschreibung des Tokens enthält mindestens ein ACEs mit der OwnerRights-SID .
  • Für den CreatorDescriptor-Parameter wird ein Sicherheitsdeskriptor angegeben.
  • Der Aufrufer dieser Funktion legt das SEF_AVOID_OWNER_RESTRICTION-Flag im AutoInheritFlags-Parameter nicht fest.

[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 nonzero zurück.

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

Hinweise

Wenn eine Systemzugriffssteuerungsliste (System Access Control List, SACL) in der durch den CreatorDescriptor-Parameter angegebenen SECURITY_DESCRIPTOR angegeben ist, muss für den Token-Parameter die berechtigung SE_SECURITY_NAME aktiviert sein. Die CreatePrivateObjectSecurity-Funktion überprüft diese Berechtigung und generiert möglicherweise während des Prozesses Überwachungen.

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ßlich Windows.h)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

Client-/Server-Access Control-Funktionen

Client/Server Access Control Übersicht

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

GetTokenInformation

OpenProcessToken

SECURITY_DESCRIPTOR

SECURITY_IMPERSONATION_LEVEL

SetPrivateObjectSecurity