SetPrivateObjectSecurity-Funktion (securitybaseapi.h)

Die SetPrivateObjectSecurity-Funktion ändert die Sicherheitsbeschreibung eines privaten Objekts.

Verwenden Sie die SetPrivateObjectSecurityEx-Funktion, um anzugeben, ob der geschützte Server die automatische Vererbung von Zugriffssteuerungseinträgen (ACEs) unterstützt.

Syntax

BOOL SetPrivateObjectSecurity(
  [in]           SECURITY_INFORMATION SecurityInformation,
  [in]           PSECURITY_DESCRIPTOR ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  [in]           PGENERIC_MAPPING     GenericMapping,
  [in, optional] HANDLE               Token
);

Parameter

[in] SecurityInformation

Gibt die festzulegenden Teile der Sicherheitsbeschreibung an. Dieser Wert kann eine Kombination der SECURITY_INFORMATION Bitflags sein.

[in] ModificationDescriptor

Ein Zeiger auf eine SECURITY_DESCRIPTOR-Struktur . Die Teile dieses Sicherheitsdeskriptors, die durch den SecurityInformation-Parameter angegeben werden, werden auf den ObjectsSecurityDescriptor-Sicherheitsdeskriptor angewendet.

[in, out] ObjectsSecurityDescriptor

Ein Zeiger auf einen Zeiger auf eine SECURITY_DESCRIPTOR Struktur. Diese Sicherheitsbeschreibung muss in selbstrelativer Form vorliegen. Der Arbeitsspeicher für den Sicherheitsdeskriptor muss aus dem Prozessheap (GetProcessHeap) mit der HeapAlloc-Funktion zugeordnet werden.

Bei der Eingabe ist dies der aktuelle Sicherheitsdeskriptor des privaten Objekts. Die Funktion ändert sie, um den neuen Sicherheitsdeskriptor zu erstellen. Bei Bedarf weist die SetPrivateObjectSecurity-Funktion zusätzlichen Arbeitsspeicher zu, um eine größere Sicherheitsbeschreibung zu erzeugen.

[in] GenericMapping

Ein Zeiger auf eine GENERIC_MAPPING-Struktur , die die spezifischen und Standardzugriffsrechte angibt, die den einzelnen generischen Zugriffsrechten entsprechen.

[in, optional] Token

Ein Handle für das Zugriffstoken für den Client, in dessen Auftrag die Sicherheit des privaten Objekts geändert wird. Dieser Parameter ist erforderlich, um sicherzustellen, dass der Client einen legitimen Wert für einen neuen Besitzersicherheitsbezeichner (SID) bereitgestellt hat. Das Token muss für TOKEN_QUERY Zugriff geöffnet sein.

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

Diese Funktion ist nur für die Verwendung durch Ressourcenmanager vorgesehen. Um die Standardmäßige Semantik der Zugriffssteuerung zum Aktualisieren von Sicherheitsbeschreibungen zu implementieren, sollte ein Ressourcen-Manager überprüfen, ob die folgenden Bedingungen erfüllt sind, bevor SetPrivateObjectSecurity aufgerufen wird:

  • Wenn der Besitzer des Objekts festgelegt wird, muss der aufrufende Prozess entweder über WRITE_OWNER Berechtigung verfügen oder der Besitzer des Objekts sein.
  • Wenn die DACL (Discretionary Access Control List ) des Objekts festgelegt wird, muss der aufrufende Prozess entweder über WRITE_DAC Berechtigung verfügen oder der Besitzer des Objekts sein.
  • Wenn die Systemzugriffssteuerungsliste (SACL) des Objekts festgelegt wird, muss die SE_SECURITY_NAME-Berechtigung für den aufrufenden Prozess aktiviert sein.
Wenn die vorherigen Bedingungen nicht erfüllt sind, schlägt ein Aufruf dieser Funktion nicht fehl. Die Standardzugriffsrichtlinie wird jedoch nicht erzwungen.

Der Prozess, der diese Funktion aufruft, sollte keine Identität eines Clients annehmen, da Clients in der Regel nicht über die entsprechenden Berechtigungen verfügen, die für zugrunde liegende Tokenvorgänge erforderlich sind.

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

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity