Bonjour,

tout d'abord je précise que je débute en VBS/WSH et j'ai pris le temps de chercher des infos ici même et partout où google m'a mené.
Deux posts dans cette section traite du sujet mais sans y apporter de réponse fonctionnel (où alors je suis vraiment une buse)

Problème:
Je souhaite ré-attribuer des droits à un ensemble de sous répertoires en fonction du nom du repertoire, puisque ces noms correspondent aux users.

Pour ce faire j'utilise le Win32_logicalFileSecuritySettings
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Set objWMIService = GetObject("winmgmts:")
			Set objFolderSecuritySettings = _
			objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFolderName & "'")
			intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
			intControlFlags = objSD.ControlFlags
 
			If intControlFlags AND SE_DACL_PRESENT Then
			   arrACEs = objSD.DACL
J'arrive à afficher les droits présents mais non à les modifier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
			   ' Affiche les DACLs des sous repertoires
			   For Each objACE in arrACEs
				  objExplorer.Document.WriteLn objACE.Trustee.Domain & " -" & objACE.Trustee.Name				  
			      If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
					 objExplorer.Document.WriteLn vbTab & "<font color=cyan> Allowed</font><br>"
			      ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
					 objExplorer.Document.WriteLn vbTab & "<font color=tomato> Denied</font><br>"
			      End If
			   Next
			Else
			   WScript.Echo "No DACL present in security descriptor"
			End If
Et c'est ici qu'intervient mon problème, comment attribuer ces fichus droits...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
			   '  Teste si un DACLs correspond au nom du repertoire
			   for Each objACE in arrACEs
					if objACE.Trustee.Name = objSubfolder.Name then
					' Si oui on tente desesperement d'attribuer les droits
					Set objACE.Trustee.Name = objSubfolder.Name
					end if
			   next
J'ai tenté d'utiliser FILEACL.exe pour remplacer mes zibouibouis mais je n'arrive pas à le lancer à partir de mon script, si je le lance seul directement via un shell cela fonctionne.
Je me demandais s'il ne manquait pas une librairie ou un truc du genre ?
(J'ai placé dans le repertoire de mon script les fichiers exe et com de FILEACL)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
' Intégration de FILEACL pour la gestion des droits sur les dossiers (http://www.gbordier.com)
Set Shell = Wscript.CreateObject("WScript.Shell")
Shell.Run "I:\Scripting\ACL\fileacl c:\Temp /LINE /SIMPLE /SUB:1 > I:\Scripting\ACL\ACLInfos.txt"
Voilà, j'espères que quelqu'un connaissant la façon d'attribuer des droits pourras me renseigner, que ce soit en utilisant WSH ou FILEACL.

Et au passage je me demandais s'il fallait casser l'héritage du parent avant d'attribuer des droits ? (je l'ai fait à la main pour mes tests mais ça ne change rien)
Pour info ce lien donne de précieuses informations mais je suis un peu perdu entre toutes les dépendances et certains avertissements sur la gestion complexes des ACLs.

D'avance merci d'avoir retenu votre respiration tout au long de ce post bien longuet et bon code à tous