Bonjour,

Je suis débutant en VBScript et j'ai un problème lorsque je veux accéder à la System ACL sous windows server 2003. Je n'ai par contre aucun problème pour la DACL.

Voici un bout de code (sale mais j'ai isolé le problème c'est tout) (/* J'ai enlevé toutes les constantes nécessaires...*/):

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
 
sub	main
dim	osd, osdutil, osace, osacl, ocontainer
dim	satrustee
 
'Set ocontainer = GetObject("LDAP://ou=TF1,cn=vbscript,dc=ascotto,dc=test,dc=fr")
 
'ocontainer.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_OWNER _
'  Or ADS_SECURITY_INFO_GROUP Or ADS_SECURITY_INFO_DACL _
'  Or ADS_SECURITY_INFO_SACL
 
 
set osdutil = CreateObject("ADsSecurityUtility")                          'Création de l'objet ADsSecurity, permet entre autres de toucher aux droits
osdutil.SecurityMask = canReadSacl										'Par défaut la SACL != accessible dc on la rend accessible
set osd = osdutil.GetSecurityDescriptor("C:\Documents and Settings\Administrator\prog\vbscript", ADS_PATH_FILE, ADS_SD_FORMAT_IID)
 
'Set osd = ocontainer.Get("ntSecurityDescriptor")
 
 
set osacl = osd.SystemAcl
wscript.echo "group --> " & osd.Group & " control --> " & osd.Control & " owner --> " & osd.Owner
If (osd.Control And SE_SACL_PROTECTED) Then
	Wscript.Echo "SACL is disabled."
Else
	WScript.Echo "SACL is enabled."
end if
if (IsObject(osacl)) then
	wscript.echo "osacl is object"
end if
wscript.echo "acecount --> " & osacl.acecount
for each osace in osacl
		satrustee = osace.Trustee
		wscript.echo "trustee " & satrustee
next
end sub
Voici le résultat lorsque j'exécute le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
C:\Documents and Settings\Administrator\prog\vbscript\lssacl.vbs(230, 1) (null):
 A required privilege is not held by the client.
Sachant que je suis sur un contrôleur de domaine et que je suis admin du domaine.

J'ai au début essayé en modifiant cette ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
set osd = osdutil.GetSecurityDescriptor("C:\Documents and Settings\Administrator\prog\vbscript", ADS_PATH_FILE, ADS_SD_FORMAT_IID)
par celle là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
set osd = osdutil.GetSecurityDescriptor("\\ma_machine\vbscript$", ADS_PATH_FILESHARE, ADS_SD_FORMAT_IID)
Le $ est nécessaire puisque le partage est créé en $. et voici l'erreur que j'ai eu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
C:\Documents and Settings\Administrator\prog\vbscript\lssacl.vbs(246, 1) Microso
ft VBScript runtime error: Object required: 'osacl'
Je sais que c'est réalisable par une chaîne LDAP comme réalisé ici: http://www.activexperts.com/activmon...ersgroups/ous/

Mais je veux absolument éviter cette méthode car mon programme est bien plus long et fonctionne avec le sharepath (\\serveur\share).

Voilà ça fait maintenant quelques jours que je bloque et de l'aide serait la bienvenue.

Merci d'avance...