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