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
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
Bonjour,
Ce bout de code peut-il t'aider ?
N.B. Remarque la syntaxe 'c:\\tst.docx' pour le chemin c:\tst.docx
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
SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !
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"
Dans mon exemple, « c:\tst.docx » est un fichier en non un répertoire.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.
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 !
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
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
N'oubliez pas le Tagsi 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
Daejung,
Oui c'est du commentaire
Si tu préfères...
JimBoLion
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") ....
N'oubliez pas le Tagsi 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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager