Toby14 Toby or not Toby | Code :
- '--------------------------------------------------------------------------------
- 'recupere les parametre de sécurité des dossiers ou fichiers passé en parametres
- 'puis écrit dans un fichier txt
- sub secu(machine, dossier, nomFichier, nomCourant, chemin)
- on error resume next
- dim ObjSet, refItem
- if nomFichier = "" Then
- Set ObjSet = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & machine & "\root\cimv2:Win32_LogicalFileSecuritySetting='" & chemin & "'" )
- else
- If Right(chemin,1) <> "\" Then
- chemin = chemin & "\"
- End If
- Set ObjSet = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & machine & "\root\cimv2:Win32_LogicalFileSecuritySetting='" & chemin & nomFichier & "'" )
- end if
-
- if Err<>0 then
- call Rapport_Erreur(" erreur lors de l'appel au service wmi sur " & nomCourant & "\" & nomFichier & " surement du a une apostrophe" )
- Err.clear
- call insert_donnees(machine, nomFichier, chemin, "PB apostrophe", "voir directement", "le fichier" )
- end if
-
- If ObjSet.GetSecurityDescriptor(refSD) = 0 Then
- 'call insert_donnees(machine, nomCourant,ObjSet.Path, refSD.Owner.Name,"", "" )
- for each refItem In refSD.DACL
- if nomFichier = "" then
- Dim nouveauNomCourant
- nouveauNomCourant = "\" & nomCourant
- nouveauNomCourant = Mid(nouveauNomCourant,Len(nouveauNomCourant) - (Instr(StrReverse(nouveauNomCourant), "\" ))+2, Len(nouveauNomCourant))
- call insert_donnees(machine, nouveauNomCourant, ObjSet.Path, refSD.Owner.Name, refItem.Trustee.Name, decodeAccessMask(refItem.AccessMask))
- else
- call insert_donnees(machine, nomFichier, ObjSet.Path, refSD.Owner.Name, refItem.Trustee.Name, decodeAccessMask(refItem.AccessMask))
- end if
- next
- Set refSD = nothing
- Set refItem = nothing
- end if
- if Err<>0 Then
- call Rapport_Erreur(" Erreur dans la recheche Secu de " & nomCourant & " " & nomFichier & " path: " & ObjSet.Path)
- Err.Clear
- end if
- Set ObjSet = nothing
- nomFichier =""
- end sub
|
voici secu.
menfin je crois pas non plus qu'il y ait de fuite mémoire en fait.
Simplement vue que je fait du récursif, les boucle for s'embriquent. Sinon j'aurais pu faire de l'itératif et gérer une pile ou une file, mais j'aurais une pile énorme et donc cela prendrais aussi beaucoup de mémoire. Mais sans oute moins que d'embriquer des boucles for. Message édité par Toby14 le 23-09-2004 à 10:33:02
|