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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| Option Explicit
Dim Title,Copyright,objShell,objFolder,CheminDossier,NomDossier,NomFichier,oFSO,Dossier,Folder,Fichier
Title = "Lister les Droits sur les fichiers et les dossiers"
Copyright = " © Hackoo 2014"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0,Title & Copyright,1,"c:\Programs")
If objFolder Is Nothing Then
WScript.Quit
End If
CheminDossier = objFolder.self.path
NomDossier = objFolder.Title
NomFichier = NomDossier & ".csv"
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FileExists(NomFichier) Then
oFSO.DeleteFile(NomFichier)
End If
Set Dossier = oFSO.GetFolder(CheminDossier)
Call Lister_Droits(Dossier)
For each Folder in oFSO.GetFolder(Dossier).SubFolders
Lister_Droits(Folder)
Next
For each Fichier in oFSO.GetFolder(Dossier).Files
Lister_Droits(Fichier)
Next
Call Afficher_Resultat()
'**************************************************************************************************************
Function Lister_Droits(objet)
Dim Ws,Command,Execution
Set Ws = CreateObject("WScript.Shell")
Command = "CMD /c cacls "& qq(objet) &" >> " & NomFichier & ""
Execution = ws.Run(Command,0,True) 'exécution de la commande sans afficher la console MS-DOS
End Function
'**************************************************************************************************************
Function qq(strIn)
qq = Chr(34) & strIn & Chr(34)
End Function
'**************************************************************************************************************
Sub Afficher_Resultat()
Dim Ws,Command2,Command3,Command4,Execution,Resultat,UnicodeFile,AsciiFile
Set Ws = CreateObject("WScript.Shell")
UnicodeFile = "UnicodeDroits_"& NomFichier
AsciiFile = "Droits_"& NomFichier
Command2 = "CMD /U /C Type " & NomFichier & " > " & UnicodeFile &""
Command3 = "CMD /C Del " & NomFichier &""
Command4 = "CMD /C Del " & UnicodeFile &""
Execution = ws.Run(Command2,0,True)
Execution = ws.Run(Command3,0,True)
Call Convert(UnicodeFile,AsciiFile)
Execution = ws.Run(Command4,0,True)
Resultat = ws.Run(AsciiFile,1,True)
End Sub
'**************************************************************************************************************
'Pour Convertir le LogFile de Unicode en Ascii
Sub Convert(UnicodeFile,AsciiFile)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const ModeAscii = 0, ModeUnicode = -1
Dim fso, f_in, f_out
Set fso = CreateObject("Scripting.FileSystemObject" )
Set f_in = fso.OpenTextFile(UnicodeFile, ForReading,, ModeUnicode)
Set f_out = fso.OpenTextFile(AsciiFile, ForWriting, true, ModeAscii)
Do Until f_in.AtEndOfStream
f_out.Write f_in.Read(1)
Loop
f_in.Close
f_out.Close
End Sub
'************************************************************************************************************** |
Partager