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...*/):
Voici le résultat lorsque j'exécute le code:
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
Sachant que je suis sur un contrôleur de domaine et que je suis admin du domaine.
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.
J'ai au début essayé en modifiant cette ligne:
par celle là:
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)
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 set osd = osdutil.GetSecurityDescriptor("\\ma_machine\vbscript$", ADS_PATH_FILESHARE, ADS_SD_FORMAT_IID)
Je sais que c'est réalisable par une chaîne LDAP comme réalisé ici: http://www.activexperts.com/activmon...ersgroups/ous/
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'
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...
Partager