SetPrivateObjectSecurity, fonction (securitybaseapi.h)
La fonction SetPrivateObjectSecurity modifie le descripteur de sécurité d’un objet privé.
Pour spécifier si le serveur protégé prend en charge l’héritage automatique des entrées de contrôle d’accès (ACÉ), utilisez la fonction SetPrivateObjectSecurityEx .
Syntaxe
BOOL SetPrivateObjectSecurity(
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] PGENERIC_MAPPING GenericMapping,
[in, optional] HANDLE Token
);
Paramètres
[in] SecurityInformation
Indique les parties du descripteur de sécurité à définir. Cette valeur peut être une combinaison des indicateurs de bits SECURITY_INFORMATION .
[in] ModificationDescriptor
Pointeur vers une structure SECURITY_DESCRIPTOR . Les parties de ce descripteur de sécurité indiquées par le paramètre SecurityInformation sont appliquées au descripteur de sécurité ObjectsSecurityDescriptor .
[in, out] ObjectsSecurityDescriptor
Pointeur vers un pointeur vers une structure SECURITY_DESCRIPTOR . Ce descripteur de sécurité doit être sous forme auto-relative . La mémoire du descripteur de sécurité doit être allouée à partir du tas de processus (GetProcessHeap) avec la fonction HeapAlloc.
En entrée, il s’agit du descripteur de sécurité actuel de l’objet privé. La fonction la modifie pour produire le nouveau descripteur de sécurité. Si nécessaire, la fonction SetPrivateObjectSecurity alloue de la mémoire supplémentaire pour produire un descripteur de sécurité plus grand.
[in] GenericMapping
Pointeur vers une structure de GENERIC_MAPPING qui spécifie les droits d’accès spécifiques et standard qui correspondent à chacun des droits d’accès génériques.
[in, optional] Token
Handle du jeton d’accès pour le client pour lequel la sécurité de l’objet privé est en cours de modification. Ce paramètre est requis pour s’assurer que le client a fourni une valeur légitime pour un nouvel identificateur de sécurité de propriétaire (SID). Le jeton doit être ouvert pour un accès TOKEN_QUERY.
Valeur retournée
Si la fonction réussit, la fonction retourne une valeur différente de zéro.
Si la fonction échoue, elle retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Cette fonction est destinée à être utilisée par les gestionnaires de ressources uniquement. Pour implémenter la sémantique de contrôle d’accès standard pour la mise à jour des descripteurs de sécurité, un gestionnaire de ressources doit vérifier que les conditions suivantes sont remplies avant d’appeler SetPrivateObjectSecurity :
- Si le propriétaire de l’objet est défini, le processus appelant doit avoir WRITE_OWNER autorisation ou être le propriétaire de l’objet.
- Si la liste de contrôle d’accès discrétionnaire (DACL) de l’objet est définie, le processus appelant doit avoir WRITE_DAC autorisation ou être le propriétaire de l’objet.
- Si la liste de contrôle d’accès système (SACL) de l’objet est définie, le privilège SE_SECURITY_NAME doit être activé pour le processus appelant.
Le processus appelant cette fonction ne doit pas emprunter l’identité d’un client, car les clients ne disposent généralement pas des privilèges appropriés requis pour les opérations de jeton sous-jacentes.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | securitybaseapi.h (inclure Windows.h) |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |
Voir aussi
Fonctions de Access Control client/serveur