Fonction SetNamedSecurityInfoA (aclapi.h)

La fonction SetNamedSecurityInfo 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 son nom.

Syntaxe

DWORD SetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [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] pObjectName

Pointeur vers une chaîne terminée par null qui spécifie le nom de l’objet pour lequel définir les informations de sécurité. Il peut s’agir du nom d’un fichier ou d’un répertoire local ou distant sur un système de fichiers NTFS, un partage réseau, une clé de Registre, un sémaphore, un événement, un mutex, un mappage de fichiers ou un minuteur d’attente.

Pour obtenir une description des formats de chaîne pour les différents types d’objets, consultez SE_OBJECT_TYPE.

[in] ObjectType

Valeur de l’énumération SE_OBJECT_TYPE qui indique le type d’objet nommé par le paramètre pObjectName .

[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 une structure SID qui identifie le propriétaire de l’objet. Si l’appelant n’a pas la constante SeRestorePrivilege (voir Privilege Constants), ce SID doit être contenu dans le jeton de l’appelant et avoir l’autorisation SE_GROUP_OWNER activée. Le paramètre SecurityInfo doit inclure l’indicateur OWNER_SECURITY_INFORMATION. Pour définir le propriétaire, l’appelant doit avoir WRITE_OWNER accès à l’objet ou avoir le privilège SE_TAKE_OWNERSHIP_NAME activé. Si vous ne définissez pas le SID propriétaire, ce paramètre peut avoir la valeur NULL.

[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. Si vous ne définissez pas le SID du groupe principal, ce paramètre peut avoir la valeur NULL.

[in, optional] pDacl

Pointeur vers la nouvelle liste DACL de l’objet. Le paramètre SecurityInfo doit inclure l’indicateur DACL_SECURITY_INFORMATION. L’appelant doit avoir WRITE_DAC accès à l’objet ou être le propriétaire de l’objet. Si vous ne définissez pas la liste DACL, ce paramètre peut avoir la valeur NULL.

[in, optional] pSacl

Pointeur vers la nouvelle liste SACL de 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. Si vous ne définissez pas la liste SACL, ce paramètre peut avoir la valeur NULL.

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 tout élément 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 pouvant être héritées (ACA) aux objets enfants existants, conformément aux règles d’héritage.

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

  • Fichiers ou répertoires locaux ou distants sur un fichier NTFS
  • Imprimantes locales ou distantes
  • Services Windows locaux ou distants
  • Partages réseau
  • les clés de Registre
  • Sémaphores, événements, mutexes et minuteurs d’attente
  • Objets de mappage de fichiers
  • Objets de service d’annuaire
La fonction SetNamedSecurityInfo ne réorganise pas les AE d’accès autorisés ou refusés en fonction de l’ordre préféré. Lors de la propagation d’AAC hérités vers des objets enfants existants, SetNamedSecurityInfo place les ACÉ hérités dans l’ordre après tous les AAC non hérités dans les dll DACL des objets enfants.

Cette fonction transfère les informations en texte clair. Les informations transférées par cette fonction sont signées, sauf si la signature a été désactivée pour le système, mais qu’aucun chiffrement n’est effectué.

Lorsque vous mettez à jour les droits d’accès d’un dossier indiqué par un chemin UNC, par exemple \Test\TestFolder, l’ACE hérité d’origine est supprimé et le chemin d’accès au volume complet n’est pas inclus.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Modification des listes de contrôle d’accès d’un objet ou Prise de propriété d’un objet.

Notes

L’en-tête aclapi.h définit SetNamedSecurityInfo comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

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

SetSecurityInfo