SetSecurityInfo, fonction (aclapi.h)

La fonction SetSecurityInfo définit les informations de sécurité spécifiées dans le descripteur de sécurité d’un objet spécifié. L’appelant identifie l’objet par un handle.

Pour définir la SACL d’un objet, le privilège SE_SECURITY_NAME doit être activé pour l’appelant.

Syntaxe

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

Paramètres

[in] handle

Handle de l’objet pour lequel définir des informations de sécurité.

[in] ObjectType

Membre de l’énumération SE_OBJECT_TYPE qui indique le type d’objet identifié par le paramètre handle .

[in] SecurityInfo

Ensemble d’indicateurs de bits qui indiquent le type d’informations de sécurité à définir. Ce paramètre peut être une combinaison des indicateurs de bits SECURITY_INFORMATION .

[in, optional] psidOwner

Pointeur vers un SID qui identifie le propriétaire de l’objet. Le SID doit être un sid qui peut être affecté en tant que SID propriétaire d’un descripteur de sécurité. Le paramètre SecurityInfo doit inclure l’indicateur OWNER_SECURITY_INFORMATION. Ce paramètre peut être NULL si vous ne définissez pas le SID du propriétaire.

[in, optional] psidGroup

Pointeur vers un SID qui identifie le groupe principal de l’objet . Le paramètre SecurityInfo doit inclure l’indicateur GROUP_SECURITY_INFORMATION. Ce paramètre peut être NULL si vous ne définissez pas le SID du groupe principal.

[in, optional] pDacl

Pointeur vers le nouveau DACL pour l’objet . Ce paramètre est ignoré, sauf si la valeur du paramètre SecurityInfo inclut l’indicateur DACL_SECURITY_INFORMATION . Si la valeur du paramètre SecurityInfo inclut l’indicateur DACL_SECURITY_INFORMATION et que la valeur de ce paramètre est définie sur NULL, l’accès complet à l’objet est accordé à tout le monde. Pour plus d’informations sur les DACL Null , consultez Création d’une liste de contrôle d’accès.

[in, optional] pSacl

Pointeur vers la nouvelle SACL pour l’objet . Le paramètre SecurityInfo doit inclure l’un des indicateurs suivants : SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION ou BACKUP_SECURITY_INFORMATION. Si vous définissez SACL_SECURITY_INFORMATION ou SCOPE_SECURITY_INFORMATION, le privilège SE_SECURITY_NAME doit être activé pour l’appelant. Ce paramètre peut être NULL si vous ne définissez pas la liste SACL.

Valeur retournée

Si la fonction réussit, la fonction retourne ERROR_SUCCESS.

Si la fonction échoue, elle retourne un code d’erreur différent de zéro défini dans WinError.h.

Remarques

Si vous définissez la liste de contrôle d’accès discrétionnaire (DACL) ou des éléments de la liste de contrôle d’accès système (SACL) d’un objet, le système propage automatiquement toutes les entrées de contrôle d’accès (ACÉ) pouvant être héritées aux objets enfants existants, conformément aux règles d’héritage ACE.

Vous pouvez utiliser la fonction SetSecurityInfo avec les types d’objets suivants :

  • Fichiers ou répertoires locaux ou distants sur un fichier NTFS
  • Canaux nommés
  • Imprimantes locales ou distantes
  • Services Windows locaux ou distants
  • Partages réseau
  • les clés de Registre
  • Sémaphores, événements, mutex et minuteurs d’attente
  • Processus, threads, travaux et objets de mappage de fichiers
  • Postes de travail et postes de travail de fenêtre
  • Objets du service d’annuaire

La fonction SetSecurityInfo ne réorganise pas les ACL autorisées ou refusées en fonction de l’ordre par défaut. Lors de la propagation d’ACL pouvant être hérités à des objets enfants existants, SetSecurityInfo met de l’ordre après tous les ACÉ non-hérités dans les DACL des objets enfants.

Note Si le partage d’accès aux enfants de l’objet n’est pas disponible, cette fonction ne propage pas les ACÉ non protégés aux enfants. Par exemple, si un répertoire est ouvert avec un accès exclusif, le système d’exploitation ne propage pas les AE non protégés aux sous-répertoires ou fichiers de ce répertoire lorsque la sécurité sur le répertoire est modifiée.
 
Avertissement Si le handle fourni a été ouvert avec une valeur ACCESS_MASKde MAXIMUM_ALLOWED, la fonction SetSecurityInfo ne propage pas les ACÉ aux enfants.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête aclapi.h
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

ACL

Contrôle d’accès

Fonctions Access Control de base

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo