Partager via


Récupération du DACL d’un objet

Le descripteur de sécurité d’un objet peut contenir une liste de contrôle d’accès discrétionnaire (DACL). Une liste DACL contient zéro ou plusieurs entrées de contrôle d’accès (ACA) qui identifient les utilisateurs et les groupes qui peuvent accéder à l’objet. Si une liste DACL est vide (c’est-à-dire qu’elle contient zéro ACL), aucun accès n’est explicitement accordé, de sorte que l’accès est implicitement refusé. Toutefois, si le descripteur de sécurité d’un objet n’a pas de DACL, l’objet n’est pas protégé et tout le monde a un accès complet.

Pour récupérer la liste DACL d’un objet, vous devez être le propriétaire de l’objet ou avoir READ_CONTROL accès à l’objet.

Pour obtenir et définir le DACL d’un objet directory, utilisez l’interface IADsSecurityDescriptor . À l’aide de C++, la méthode IADsSecurityDescriptor::get_DiscretionaryAcl retourne un pointeur IDispatch . Appelez QueryInterface sur ce pointeur IDispatch pour obtenir une interface IADsAccessControlList , puis utilisez les méthodes de cette interface pour accéder aux ACÉ individuels dans la liste DACL. La procédure de modification d’une liste de contrôle d’accès est décrite dans Définition des droits d’accès sur un objet.

Pour énumérer les AAC, utilisez la méthode IADsAccessControlList::get__NewEnum . La méthode retourne un pointeur IUnknown . Appelez QueryInterface sur ce pointeur IUnknown pour obtenir une interface IEnumVARIANT . Utilisez la méthode IEnumVARIANT::Next pour énumérer les AES dans la liste de contrôle d’accès. Chaque ACE est retourné en tant que VARIANT contenant un pointeur IDispatch (le membre vt est VT_DISPATCH). Appelez QueryInterface sur ce pointeur IDispatch pour obtenir une interface IADsAccessControlEntry pour l’ACE. Vous pouvez utiliser les méthodes de l’interface IADsAccessControlEntry pour définir ou récupérer les composants d’un ACE.

Pour plus d’informations sur les DACL et les AAC, consultez les rubriques suivantes dans le Kit de développement logiciel (SDK) de plateforme.