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