Fonction ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)
La fonction ConvertToAutoInheritPrivateObjectSecurity convertit un descripteur de sécurité et ses listes de contrôle d’accès (ACL) en un format qui prend en charge la propagation automatique des entrées de contrôle d’accès (ACÉ) pouvant être héritées.
Syntaxe
BOOL ConvertToAutoInheritPrivateObjectSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in] PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] PGENERIC_MAPPING GenericMapping
);
Paramètres
[in, optional] ParentDescriptor
Pointeur vers le descripteur de sécurité du conteneur parent de l’objet. S’il n’existe aucun conteneur parent, ce paramètre a la valeur NULL.
[in] CurrentSecurityDescriptor
Pointeur vers le descripteur de sécurité actuel de l’objet.
[out] NewSecurityDescriptor
Pointeur vers une variable qui reçoit un pointeur vers le descripteur de sécurité auto-relatif nouvellement alloué. Il incombe à l’appelant d’appeler la fonction DestroyPrivateObjectSecurity pour libérer ce descripteur de sécurité.
[in, optional] ObjectType
Pointeur vers une structure GUID qui identifie le type d’objet associé au paramètre CurrentSecurityDescriptor . Si l’objet n’a pas de GUID, ce paramètre doit avoir la valeur NULL.
[in] IsDirectoryObject
Si la valeur est TRUE, le nouvel objet est un conteneur et peut contenir d’autres objets. Si la valeur est FALSE, le nouvel objet n’est pas un conteneur.
[in] GenericMapping
Pointeur vers une structure de GENERIC_MAPPING qui spécifie le mappage de chaque droit générique vers des droits spécifiques pour l’objet.
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
La fonction ConvertToAutoInheritPrivateObjectSecurity tente de déterminer si les ACÉ de la liste de contrôle d’accès discrétionnaire (DACL) et de la liste de contrôle d’accès système (SACL) du descripteur de sécurité actuel ont été hérités du descripteur de sécurité parent. La fonction transmet le paramètre ParentDescriptor à la fonction CreatePrivateObjectSecurityEx pour obtenir des listes de contrôle d’accès qui contiennent uniquement des ACL héritées. Ensuite, il compare ces AE aux AE dans le descripteur de sécurité d’origine pour déterminer lequel des A ACE d’origine a été hérité. Les AE n’ont pas besoin de correspondre à un à un. Par instance, un ACE qui autorise l’accès en lecture et en écriture à un fiduciaire peut être équivalent à deux AE : un ACE qui autorise l’accès en lecture et un ACE qui autorise l’accès en écriture.
Tous les ACU du descripteur de sécurité d’origine qui sont équivalents aux A ACE hérités du descripteur de sécurité parent sont marqués avec l’indicateur INHERITED_ACE et ajoutés au nouveau descripteur de sécurité. Tous les autres ACÉ du descripteur de sécurité d’origine sont ajoutés au nouveau descripteur de sécurité en tant qu’AÉC nonhérimentés.
Si le DACL d’origine n’a pas d’AIC hérité, la fonction définit l’indicateur SE_DACL_PROTECTED dans les bits de contrôle du nouveau descripteur de sécurité. De même, l’indicateur SE_SACL_PROTECTED est défini si aucun des AIC de la liste de contrôle d’accès partagé n’est hérité.
Pour les dll DACL qui ont des AAC hérités, la fonction réorganise les AAC en deux groupes. Le premier groupe a des AE qui ont été directement appliqués à l’objet. Le deuxième groupe a hérité des AE. Ce classement garantit que les AÉC nonhérimentés ont la priorité sur les ACÉ hérités. Pour plus d’informations, consultez Ordre des entrées ACE dans une liste de contrôle d’accès discrétionnaire (DACL).
La fonction définit les indicateurs SE_DACL_AUTO_INHERITED et SE_SACL_AUTO_INHERITED dans les bits de contrôle du nouveau descripteur de sécurité.
La fonction ne modifie pas l’ordre des AIC autorisés par rapport aux AIC refusés dans la liste de contrôle d’accès, car cela modifierait la sémantique du descripteur de sécurité résultant. Si la fonction ne peut pas convertir le DACL sans modifier la sémantique, elle laisse le DACL inchangé et définit l’indicateur SE_DACL_PROTECTED.
Le nouveau descripteur de sécurité a le même propriétaire et le même groupe principal que le descripteur de sécurité d’origine.
Le nouveau descripteur de sécurité étant équivalent au descripteur de sécurité d’origine, l’appelant n’a besoin d’aucun droit d’accès ou privilèges pour mettre à jour le descripteur de sécurité au nouveau format.
Cette fonction fonctionne avec les listes de contrôle d’accès ACL_REVISION et ACL_REVISION_DS.
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 |