< Macros-commandes VBA
fin de la boite de navigation du chapitre

Cet article explique comment, à l'aide des interfaces de programmation de Windows (API Win32), il est possible de lire chaque entrée de la liste de contrôle d'accès (une ACE - Access Control Entry - de l'ACL - Access Control List) d'un répertoire local ou distant avec VBA.

Autrement dit, pour un répertoire donné, on affiche chaque utilisateur (ou groupe, ou alias) et les droits d'accès associés à cet utilisateur.

Description

Dans cet exemple, plusieurs interfaces de programmation de Windows sont utilisées :

  • GetFileSecurity (...) : Récupère le descripteur de sécurité d'un fichier (ou répertoire).
  • GetSecurityDescriptorDacl (...) : Récupère le descripteur de la liste de contrôle d'accès.
  • GetAclInformation (...) : Récupère la liste de contrôle d'accès.
  • GetAce (...) : Récupère une entrée de la liste (un SID, et un drapeau représentant les droits.
  • LookupAccountSid (..) : Récupère un nom de domaine, de compte et type de compte (utilisateur, alias, groupe, ...) à partir d'un SID (identificateur système).

Dans un premier temps on indique un répertoire (soit local : c:\tmp soit distant : \\serveur1\partage1). Ensuite on récupère pour ce répertoire, et à l'aide des API précédentes la liste de contrôle d'accès associée. Pour chaque entrée de la liste, on analyse le drapeau des droits, puis on récupère le nom du compte que l’on affiche avec une boîte de dialogue simple (message box).

Déclarations préalables

Fonction GetFolderInfo

NB: Pour sélectionner un répertoire, il est possible d’utiliser l'exemple suivant : mvps.org

Liens externes

Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.