IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Tester les droits d'accès à un dossier


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 858
    Points : 583
    Points
    583
    Par défaut Tester les droits d'accès à un dossier
    Bonjour,

    Je sais comment tester en VBA si un dossier ou un lecteur existe mais comme tester également si l'utilisateur à les droits d'accès en lecture et/ou en écriture sur ce dossier ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Ce bout de code peut-il t'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub PropLecEcr()
    Dim objWMIService As Object, strComputer As String, colFiles As Object, objFile As Object
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_Datafile Where name = 'c:\\tst.docx'")
    For Each objFile In colFiles
        Debug.Print "Readable: " & objFile.Readable
        Debug.Print "Writeable: " & objFile.Writeable
    Next objFile
    End Sub
    N.B. Remarque la syntaxe 'c:\\tst.docx' pour le chemin c:\tst.docx
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 858
    Points : 583
    Points
    583
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,

    Ce bout de code peut-il t'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub PropLecEcr()
    Dim objWMIService As Object, strComputer As String, colFiles As Object, objFile As Object
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_Datafile Where name = 'c:\\tst.docx'")
    For Each objFile In colFiles
        Debug.Print "Readable: " & objFile.Readable
        Debug.Print "Writeable: " & objFile.Writeable
    Next objFile
    End Sub
    N.B. Remarque la syntaxe 'c:\\tst.docx' pour le chemin c:\tst.docx
    Merci j'ai voulu tester en créant un dossier "tst.docx" sur C:\ et en y mettant 2 fichiers. le debug.print ne donne rien.


    En fait ce n'est pas tout à fait ce que je voulais.

    Sur le réseau il y a plusieurs dossiers du genre
    "\\bla\Finance\Services"
    "\\bla\Finance\Services\Shared"
    "\\bla\Finance\Services2"

    Je voudrais qu'une macro installée sur un poste puisse déterminer si l'utilisateur y a accès, que ces dossiers soient mappés ou pas, sachant qu'ils peuvent être visibles sans que pour autant il puisse en voir le contenu (accès refusé si il clique sur le dossier) et qu'un utilisateur peut avoir accès à "\\bla\Finance\Services\Shared" mais pas à "\\bla\Finance\Services"

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Merci j'ai voulu tester en créant un dossier "tst.docx" sur C:\ et en y mettant 2 fichiers. le debug.print ne donne rien.
    Dans mon exemple, « c:\tst.docx » est un fichier en non un répertoire.

    Regarde à ces adresses pour trouver la syntaxe qui te convient

    http://technet.microsoft.com/library/ee176599.aspx

    http://www.activexperts.com/activmon...esInFolder.htm
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Daejung,

    A partir des informations issues de la réflexion de Claude, ce bout de code te permet de lister les droits pour l'ensemble des utilisateurs dans un répertoire donné :

    A toi d'adapter en fonction de l'utilisateur en cours et du répertoire spécifié..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Function droits_rep()
    On Error Resume Next
    ' The folder named "testfolder" must exist on the C:\ drive.
    Set wmiFileSecSetting = GetObject( _
    "winmgmts:Win32_LogicalFileSecuritySetting.path='c:\\'")
    RetVal = wmiFileSecSetting. _
        GetSecurityDescriptor(wmiSecurityDescriptor)
    If Err.Number <> 0 Then
        Debug.Print "GetSecurityDescriptor failed" _
        & vbCrLf & Err.Number & vbCrLf & Err.Description
        Exit Function
    Else
        Debug.Print "GetSecurityDescriptor succeeded"
    End If
    ' Retrieve the DACL array of Win32_ACE objects.
    DACL = wmiSecurityDescriptor.DACL
    For Each wmiAce In DACL
        Debug.Print "Access Mask: " & wmiAce.AccessMask
        Debug.Print "ACE Type: " & wmiAce.AceType
    ' Get Win32_Trustee object from ACE
         Set Trustee = wmiAce.Trustee
        Debug.Print "Trustee Domain: " & Trustee.Domain
        Debug.Print "Trustee Name: " & Trustee.Name
    ' Get SID as array from Trustee
        SID = Trustee.SID
        strsid = Join(SID, ",")
        Debug.Print "Trustee SID: {" & strsid & "}"
        '
        Select Case Int(wmiAce.AccessMask)
         Case 2032127
             Droits = "FULL"
         Case 1179817
             Droits = "RX"
         Case -1610612736
             Droits = "RXe"
         Case 1245631
             Droits = "RWX"
         Case 268435456
             Droits = "FULL SUB ONLY"
         Case Else
             Droits = CStr(wmiAce.AccessMask)
        End Select
        Debug.Print "Perms=" & Droits & "-" & " Account=" & wmiAce.Trustee
    Next
    End Function
    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 858
    Points : 583
    Points
    583
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Dans mon exemple, « c:\tst.docx » est un fichier en non un répertoire.

    Regarde à ces adresses pour trouver la syntaxe qui te convient

    http://technet.microsoft.com/library/ee176599.aspx

    http://www.activexperts.com/activmon...esInFolder.htm
    Ok je vais regarder .

    "tst.docx" me laissait a priori qu'il s'agissait d'un fichier (.docx étant l'extension d'un fichier word) mais "For Each objFile In colFiles" me donnait l"impression contraire.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 858
    Points : 583
    Points
    583
    Par défaut
    Citation Envoyé par jimbolion Voir le message
    Daejung,

    A partir des informations issues de la réflexion de Claude, ce bout de code te permet de lister les droits pour l'ensemble des utilisateurs dans un répertoire donné :

    A toi d'adapter en fonction de l'utilisateur en cours et du répertoire spécifié..
    ............

    JimBoLion

    Merci je vais essayer de comprendre ce code et sa restitution...
    Un point : Un commentaire fait référence à un dossier ""testfolder"" que je ne vois nulle part dans le code (' The folder named "testfolder" must exist on the C:\ drive.)

  8. #8
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Daejung,

    Oui c'est du commentaire

    Si tu préfères...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    On Error Resume Next
    ' The folder named "testfolder" must exist on the C:\ drive.
    Set wmiFileSecSetting = GetObject( _
    "winmgmts:Win32_LogicalFileSecuritySetting.path='c:\\testfolder") ....
    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/12/2013, 22h54
  2. Réponses: 18
    Dernier message: 09/03/2013, 12h26
  3. Réponses: 6
    Dernier message: 09/10/2012, 18h45
  4. Réponses: 1
    Dernier message: 13/11/2011, 23h24
  5. [APACHE] Modifié les droits d'accès à un dossier.
    Par will-scs dans le forum Apache
    Réponses: 1
    Dernier message: 26/08/2005, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo