Macros-commandes VBA/Gestion des droits et répertoires

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Gestion des droits et répertoires
Icône de la faculté
Chapitre no 14
Leçon : Macros-commandes VBA
Chap. préc. :Lectures et écritures
Chap. suiv. :Devenez un connaisseur
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Macros-commandes VBA : Gestion des droits et répertoires
Macros-commandes VBA/Gestion des droits et répertoires
 », n'a pu être restituée correctement ci-dessus.

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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

Fonction GetFolderInfo[modifier | modifier le wikicode]

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

Liens externes[modifier | modifier le wikicode]