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.
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