Partager via


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.
Si les conditions précédentes ne sont pas remplies, un appel à cette fonction n’échoue pas ; toutefois, la stratégie d’accès standard n’est pas appliquée.

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

Vue d’ensemble des Access Control client/serveur

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity