Accueil > > > LISTER VOS DROITS CONCERNANT LES REPERTOIRES DE VOTRE ORDINATEUR OU CEUX DU RÉSEAU
LISTER VOS DROITS CONCERNANT LES REPERTOIRES DE VOTRE ORDINATEUR OU CEUX DU RÉSEAU
Information sur la source
Description
/!\ Ne fonctionne qu'avec des MS en Anglais But de ce programme: Le but de ce programme est de lister les droits d'un répertoire (de façon récursive). Finalité : le fichier final généré se nomme traitement.txt. Vous pouvez facilement l'exporter vers un tableur pour ensuite l'exploiter rapidement et localiser les failles de sécurité. Comment utiliser ces programmes ? Tout d'abord tous les programmes fournis à savoir : analyze.vbs, listPerm.bat et showACLS.vbs doivent être situés dans le même répertoire. Vous avez juste à lancer listPerm.bat et à choisir le répertoire source. Le fichier final est perms.txt. Il vous suffit ensuite de l'intégrer soit dans une base de données soit dans un tableur afin de l'exploiter de manière efficace et rapide.
Source
- '____________________________________________________________________________________________
- '______________________________________listPerm.bat__________________________________________
- '____________________________________________________________________________________________
- showacls.vbs
- showacls.bat
- analyze.bat
- del showacls.txt
- del showacls.bat
-
- '____________________________________________________________________________________________
- '____________________________________showACLS.vbs____________________________________________
- '____________________________________________________________________________________________
- Dim ShellO
- Set ShellO = CreateObject("WScript.Shell")
- Dim FSO
- Set FSO = CreateObject("Scripting.FileSystemObject")
- Dim SListe
- Dim Schemin
-
- 'permettant de mettre en place la fenetre parcourir pour choisir le repertoire source
- ReturnOnlyFSDirs = &H0001
- Set oShell = WScript.CreateObject("Shell.Application" )
- Title = "Veuillez sélectionner un dossier"
- Flags=ReturnOnlyFSDirs
- 'InitDir = "C:\" '<-- Adapter selon les besoins
- Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
- If Not Item Is Nothing Then
- Result=Item.Title
- If InStr(1, Result, ":" ) = 0 Then
- Result=Item.ParentFolder.ParseName(Item.Title).Path
- End If
- Schemin = Result
- Else
- WScript.echo "Aucun dossier n'a été sélectionné !", vbExclamation, Title
- End If
-
- 'Schemin = var 'Dossier à modifier
-
- 'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
- Dim Fichier
- Set Fichier = FSO.CreateTextFile("showacls.bat")
- 'Lister l'arborescence du dossier
- ListerDossier Schemin, Fichier
- 'Fermeture du fichier contenant l'arborescence du répertoire à traiter
- Fichier.WriteLine "analyze.vbs"
- Fichier.Close
-
- Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
- On Error Resume Next
- Dim FSO
- Set FSO = CreateObject("Scripting.FileSystemObject")
- Dim ObjRep
- Set ObjRep = FSO.GetFolder(Schemin) 'dossier
- Dim ObjSubRep
- Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
- Dim ObjSubRepItem
- For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossier
- 'WScript.echo ObjSubRepItem.Path
- 'chaine = "cacls " & vbclrf & ObjSubRepItem.Path & vbclrf & " >> showACLS.txt"
- Fichier.WriteLine ("cacls " & chr(34) & ObjSubRepItem.Path & chr(34) & " >> showacls.txt") 'Ecrire le path dans la liste
- ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
- Next
- End Function
-
-
- '_____________________________________________________________________________________________
- '_________________________________________analyze.vbs_________________________________________
- '_____________________________________________________________________________________________
- On error resume next
- 'Variables globales à prévoir : nomPC
- 'connaitre le nom de l'ordi
- cheminFichier="showACLS.txt" 'fichier source
- Dim FSO 'déclaration file system object
- Dim cheminCourant, utilisateurCourant, tableau, chaineTotale, chaineLigne 'variables globales
- Dim boolOK 'booléen stockant la nature de l'autorisation (Autoriser ou Refuser)
- Redim tableau(6) 'tableau contenant 6 colonnes (de 0 à 5)
- Set FSO = CreateObject("Scripting.FileSystemObject")'instanciation
- Set lecture = FSO.OpenTextFile(cheminFichier)'on instancie le fichier texte
- Dim cpt 'compteur permettant d'éviter de fermer le tableau à la première ligne
- cpt=0
- enteteFichier
- Do While Not lecture.AtEndOfStream 'on parcourt chaque ligne du fichier texte
- boolOK = True 'remise à zéro
- ligne = lecture.Readline
- ligne = trim(ligne) 'on supprime les espaces entourant la ligne
- If NOT(Instr(ligne, "<Account Domain not found>") <> 0) Then
- If (reconnaissanceLigne(ligne) = 0) Then 'on ouvre un tableau temporaire
- 'WScript.echo "type 0"
- If (cpt <> 0) Then 'la première ligne est de type 0
- fermetureTableau
- End If
- ligneM=cas0(ligne) 'ligne de la forme chemin|utilisateur|droits
- tab=Split(ligneM, "|") 'split permet de traiter la ligne comme un tableau
- 'WScript.echo tab(0)
- ouvertureCas0 'on initialise le tableau
- cheminCourant=tab(0)
- utilisateurCourant=tab(1)
- If (Instr(tab(2), "(DENY)") <> 0 Or Instr(tab(2), "R") <> 0) Then
- boolOK = true
- Else
- boolOK = false
- End If
- tableau(0)=cheminCourant
- tableau(1)=utilisateurCourant
- 'WScript.echo "cellule 2 " & tab(2)
- gererDroits(tab(2))
- Else
- If (reconnaissanceLigne(ligne) = 1) Then 'on ouvre un tableau temporaire
- fermetureTableau
- ligneM=cas1(ligne)
- tab=Split(ligneM, "|")
- ouvertureCas1 'on initialise le tableau en gardant la premiere cellule (le chemin)
- tableau(1)=tab(0) 'on remplit le champ utilisateur
- If (Instr(tab(1), "(DENY)") <> 0 Or Instr(tab(1), "R") <> 0) Then
- boolOK = true
- Else
- boolOK = false
- End If
- gererDroits(tab(1))
- Else
- If (reconnaissanceLigne(ligne) = 2) Then 'on poursuit l'écriture du tableau
- 'WScript.echo "type2"
- affectationDroitsCas2 ligne, boolOK
- End If
- End If
- End If
- End If
- Loop
- fermetureTableau 'ferme la dernière ligne
- ecritureSortie chaineLigne
- 'WScript.echo chaineLigne
- lecture.Close
-
- 'fonction permettant de faire la distinction entre les différents types de lignes
- Function reconnaissanceLigne(ligne)
- If (mid(ligne, 2,2) = ":\") Then
- reconnaissanceLigne=0
- Else
- If (Instr(ligne,"\") <> 0 Or Instr(ligne, "Everyone") <> 0 ) Then
- reconnaissanceLigne=1
- Else
- If (left(ligne, 12) = "FILE_GENERIC" Or left(ligne, 6) = "DELETE" Or left(ligne, 5) = "READ_" Or _
- left(ligne, 11) = "SYNCHRONIZE" Or left(ligne, 9) = "FILE_READ" Or left(ligne, 10) = "FILE_WRITE" Or _
- left(ligne, 12) = "FILE_EXECUTE" Or left(ligne, 11) = "FILE_DELETE" Or left(ligne, 11) = "FILE_APPEND" Or _
- left(ligne, 12) = "GENERIC_READ" Or left(ligne, 15) = "GENERIC_EXECUTE" Or left(ligne, 13) = "GENERIC_WRITE") Then
- reconnaissanceLigne=2
- 'WScript.echo "type de ligne : 2 " & ligne
- Else
- reconnaissanceLigne=-1
- End If
- End If
- End If
- End Function
-
- 'fonction traitant le cas 0
-
- Function cas0(chaine)
- 'If (Instr(chaine, "hiberfil.sys") <> 0) Then 'on ne veut pas traiter le fichier hiberfil.sys
- ' cas0=""
- 'Else
- chaine=trim(chaine)
- Dim sep1, sep2
- 'gestion du cas de Everyone
- If (Instr(chaine, "Everyone") <> 0) Then
- sep1=Instr(chaine, "Everyone") - 1
- cas0=left(chaine, sep1-2) & "|" & mid(chaine, sep1+1, 8) & "|" & right(chaine, len(chaine) - (sep1+9))
- 'WScript.echo "cas 0 pour Everyone " & cas0
- Else
- If (Instr(chaine, "COSMOS\") <> 0) Then
- sep1=Instr(chaine, "COSMOS\") - 1
- Else
- If (Instr(chaine, "NT AUTHORITY\") <> 0) Then
- sep1=Instr(chaine, "NT AUTHORITY\") - 1
- Else
- If (Instr(chaine, "BUILTIN\") <> 0 ) Then
- sep1=Instr(chaine, "BUILTIN\") - 1
- End If
- End If
- End If
- chemin=left(chaine, sep1-1)
- 'on regarde si on est dans un cas de special access
- If (compteur2Points(chaine) = 2) Then
- sep2 = InStrRev(chaine, ":")
- Else
- If (compteur2Points(chaine) = 3) Then 'cas de special access
- sep2 = InStrRev(chaine, ":(")
- End If
- End If
- utilisateur = right(left(chaine, sep2-1),sep2-sep1-1)
- droits=right(chaine, len(chaine)-sep2)
- cas0=chemin & "|" & utilisateur & "|" & droits
- End If
- 'End If
- End Function
-
- Function cas1(chaine)
- chaine=trim(chaine)
- If (Instr(chaine, "Everyone") <> 0) Then
- sepT=Instr(chaine, "Everyone")
- chaine = right(chaine, len(chaine)-sepT+1)
- 'WScript.echo "chaine " & chaine
- cas1=left(chaine, 8) & "|" & right(chaine, len(chaine) - (septT+9))
- 'WScript.echo "cas1 pour Everyone : " & cas1
- Else
- Dim i
- i=Instr(chaine, ":") 'prend le premier ":" rencontré donc pas de problème pour le special access
- cas1=left(chaine, i-1) & "|" & right(chaine, len(chaine)-i)
- cas1=trim(cas1)
- 'WScript.echo "cas1 : " & cas1
- End If
- End Function
-
- 'forme du tableau final : chemin|utilisateur|Hérité|Lecture|Ecriture|Execution
- Sub affectationDroitsCas2(ligne, P) 'P:permissions de départ Autoriser ou Refuser
- If (Instr(ligne, "FILE_READ") <> 0 OR Instr(ligne, "GENERIC_READ") <> 0) Then
- tableau(4)="-"
- If (P=True) Then
- tableau(3)="O"
- Else
- If (P=False) Then
- tableau(3)="N"
- End If
- End If
- Else
- If (Instr(ligne, "FILE_WRITE") <> 0 OR Instr(ligne, "GENERIC_WRITE") <> 0) Then
- tableau(4)="-"
- If (P=True) Then
- tableau(4)="O"
- Else
- If (boolOk=False) Then
- tableau(4)="N"
- End If
- End If
- Else
- If (Instr(ligne,"FILE_EXECUTE") <> 0 OR Instr(ligne, "GENERIC_EXECUTE") <> 0) Then
- tableau(4)="-"
- If (P=True) Then
- tableau(5)="O"
- 'WScript.echo "executer"
- Else
- If (P=False) Then
- tableau(5)="N"
- End If
- End If
- End If
- End If
- End If
- End Sub
-
- Sub gererDroits(droits)
- If (Instr(droits, "F") <> 0) Then 'l'utilisateur a tous les droits
- tableau(3)="O"
- tableau(4)="O"
- tableau(5)="O"
- Else
- If (Instr(droits, "C") <> 0) Then
- tableau(3)="O"
- tableau(4)="O"
- tableau(5)="O"
- Else
- If (Instr(droits, "R") <> 0) Then
- tableau(3)="N"
- tableau(4)="N"
- tableau(5)="N"
- End If
- End If
- End If
- 'héritage
- If (Instr(droits, "(CI)") <> 0 Or Instr(droits, "(OI)") <> 0 Or Instr(droits, "(IO)") <> 0 ) Then
- tableau(2)="O"
- End If
- End sub
-
- 'permet de déterminer si on est sur une ligne contenant (special access:)
- Function compteur2Points(chaine)
- Dim cpt, chaineTmp, i 'indice
- cpt = 0
- i=Instr(chaine, ":") 'on est sûr qu'il y en a au moins un sur la ligne et au maximum il y en a 2
- cpt = 1
- chaineTmp=right(chaine, len(chaine)-i)
- Do While (Instr(chaineTmp, ":") <> 0)
- i=Instr(chaineTmp, ":")
- cpt = cpt + 1
- chaineTmp=right(chaineTmp, len(chaineTmp)-i)
- Loop
- compteur2Points=cpt
- End Function
-
- Sub ouvertureCas0()
- For i=0 to Ubound(tableau)-1
- tableau(i)="-"
- Next
- chaineTotale = ""
- For i=0 to Ubound(tableau)-1
- chaineTotale=chaineTotale & tableau(i) & ";"
- Next
- End Sub
-
- Sub ouvertureCas1() 'fonction gardant le chemin précédent
- For i=1 to Ubound(tableau)-1
- tableau(i)="-"
- Next
- chaineTotale = ""
- For i=0 to Ubound(tableau)-1
- chaineTotale=chaineTotale & tableau(i) & ";"
- Next
- End Sub
-
- Sub fermetureTableau() 'fonction fermant le tableau càd le copiant dans le fichier
- For i = 0 to Ubound(tableau)-1
- chaineLigne=chaineLigne & tableau(i) & ";"
- Next
- chaineLigne=chaineLigne & vbcrlf
- For i = 2 to Ubound(tableau)-1
- tableau(i) = "-"
- Next
- 'WScript.echo chaineLigne
- 'chaineTotale=chaineLigne & vbcrlf & chaineTotale 'chaine finale contenant tous les droits
- End Sub
-
- Sub ecritureSortie(chaineF)
- Set sortie = FSO.CreateTextFile("perms.txt")
- With sortie
- .writeLine chaineF
- End With
- End Sub
'____________________________________________________________________________________________
'______________________________________listPerm.bat__________________________________________
'____________________________________________________________________________________________
showacls.vbs
showacls.bat
analyze.bat
del showacls.txt
del showacls.bat
'____________________________________________________________________________________________
'____________________________________showACLS.vbs____________________________________________
'____________________________________________________________________________________________
Dim ShellO
Set ShellO = CreateObject("WScript.Shell")
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe
Dim Schemin
'permettant de mettre en place la fenetre parcourir pour choisir le repertoire source
ReturnOnlyFSDirs = &H0001
Set oShell = WScript.CreateObject("Shell.Application" )
Title = "Veuillez sélectionner un dossier"
Flags=ReturnOnlyFSDirs
'InitDir = "C:\" '<-- Adapter selon les besoins
Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
If Not Item Is Nothing Then
Result=Item.Title
If InStr(1, Result, ":" ) = 0 Then
Result=Item.ParentFolder.ParseName(Item.Title).Path
End If
Schemin = Result
Else
WScript.echo "Aucun dossier n'a été sélectionné !", vbExclamation, Title
End If
'Schemin = var 'Dossier à modifier
'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
Dim Fichier
Set Fichier = FSO.CreateTextFile("showacls.bat")
'Lister l'arborescence du dossier
ListerDossier Schemin, Fichier
'Fermeture du fichier contenant l'arborescence du répertoire à traiter
Fichier.WriteLine "analyze.vbs"
Fichier.Close
Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
On Error Resume Next
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim ObjRep
Set ObjRep = FSO.GetFolder(Schemin) 'dossier
Dim ObjSubRep
Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
Dim ObjSubRepItem
For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossier
'WScript.echo ObjSubRepItem.Path
'chaine = "cacls " & vbclrf & ObjSubRepItem.Path & vbclrf & " >> showACLS.txt"
Fichier.WriteLine ("cacls " & chr(34) & ObjSubRepItem.Path & chr(34) & " >> showacls.txt") 'Ecrire le path dans la liste
ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
Next
End Function
'_____________________________________________________________________________________________
'_________________________________________analyze.vbs_________________________________________
'_____________________________________________________________________________________________
On error resume next
'Variables globales à prévoir : nomPC
'connaitre le nom de l'ordi
cheminFichier="showACLS.txt" 'fichier source
Dim FSO 'déclaration file system object
Dim cheminCourant, utilisateurCourant, tableau, chaineTotale, chaineLigne 'variables globales
Dim boolOK 'booléen stockant la nature de l'autorisation (Autoriser ou Refuser)
Redim tableau(6) 'tableau contenant 6 colonnes (de 0 à 5)
Set FSO = CreateObject("Scripting.FileSystemObject")'instanciation
Set lecture = FSO.OpenTextFile(cheminFichier)'on instancie le fichier texte
Dim cpt 'compteur permettant d'éviter de fermer le tableau à la première ligne
cpt=0
enteteFichier
Do While Not lecture.AtEndOfStream 'on parcourt chaque ligne du fichier texte
boolOK = True 'remise à zéro
ligne = lecture.Readline
ligne = trim(ligne) 'on supprime les espaces entourant la ligne
If NOT(Instr(ligne, "<Account Domain not found>") <> 0) Then
If (reconnaissanceLigne(ligne) = 0) Then 'on ouvre un tableau temporaire
'WScript.echo "type 0"
If (cpt <> 0) Then 'la première ligne est de type 0
fermetureTableau
End If
ligneM=cas0(ligne) 'ligne de la forme chemin|utilisateur|droits
tab=Split(ligneM, "|") 'split permet de traiter la ligne comme un tableau
'WScript.echo tab(0)
ouvertureCas0 'on initialise le tableau
cheminCourant=tab(0)
utilisateurCourant=tab(1)
If (Instr(tab(2), "(DENY)") <> 0 Or Instr(tab(2), "R") <> 0) Then
boolOK = true
Else
boolOK = false
End If
tableau(0)=cheminCourant
tableau(1)=utilisateurCourant
'WScript.echo "cellule 2 " & tab(2)
gererDroits(tab(2))
Else
If (reconnaissanceLigne(ligne) = 1) Then 'on ouvre un tableau temporaire
fermetureTableau
ligneM=cas1(ligne)
tab=Split(ligneM, "|")
ouvertureCas1 'on initialise le tableau en gardant la premiere cellule (le chemin)
tableau(1)=tab(0) 'on remplit le champ utilisateur
If (Instr(tab(1), "(DENY)") <> 0 Or Instr(tab(1), "R") <> 0) Then
boolOK = true
Else
boolOK = false
End If
gererDroits(tab(1))
Else
If (reconnaissanceLigne(ligne) = 2) Then 'on poursuit l'écriture du tableau
'WScript.echo "type2"
affectationDroitsCas2 ligne, boolOK
End If
End If
End If
End If
Loop
fermetureTableau 'ferme la dernière ligne
ecritureSortie chaineLigne
'WScript.echo chaineLigne
lecture.Close
'fonction permettant de faire la distinction entre les différents types de lignes
Function reconnaissanceLigne(ligne)
If (mid(ligne, 2,2) = ":\") Then
reconnaissanceLigne=0
Else
If (Instr(ligne,"\") <> 0 Or Instr(ligne, "Everyone") <> 0 ) Then
reconnaissanceLigne=1
Else
If (left(ligne, 12) = "FILE_GENERIC" Or left(ligne, 6) = "DELETE" Or left(ligne, 5) = "READ_" Or _
left(ligne, 11) = "SYNCHRONIZE" Or left(ligne, 9) = "FILE_READ" Or left(ligne, 10) = "FILE_WRITE" Or _
left(ligne, 12) = "FILE_EXECUTE" Or left(ligne, 11) = "FILE_DELETE" Or left(ligne, 11) = "FILE_APPEND" Or _
left(ligne, 12) = "GENERIC_READ" Or left(ligne, 15) = "GENERIC_EXECUTE" Or left(ligne, 13) = "GENERIC_WRITE") Then
reconnaissanceLigne=2
'WScript.echo "type de ligne : 2 " & ligne
Else
reconnaissanceLigne=-1
End If
End If
End If
End Function
'fonction traitant le cas 0
Function cas0(chaine)
'If (Instr(chaine, "hiberfil.sys") <> 0) Then 'on ne veut pas traiter le fichier hiberfil.sys
' cas0=""
'Else
chaine=trim(chaine)
Dim sep1, sep2
'gestion du cas de Everyone
If (Instr(chaine, "Everyone") <> 0) Then
sep1=Instr(chaine, "Everyone") - 1
cas0=left(chaine, sep1-2) & "|" & mid(chaine, sep1+1, 8) & "|" & right(chaine, len(chaine) - (sep1+9))
'WScript.echo "cas 0 pour Everyone " & cas0
Else
If (Instr(chaine, "COSMOS\") <> 0) Then
sep1=Instr(chaine, "COSMOS\") - 1
Else
If (Instr(chaine, "NT AUTHORITY\") <> 0) Then
sep1=Instr(chaine, "NT AUTHORITY\") - 1
Else
If (Instr(chaine, "BUILTIN\") <> 0 ) Then
sep1=Instr(chaine, "BUILTIN\") - 1
End If
End If
End If
chemin=left(chaine, sep1-1)
'on regarde si on est dans un cas de special access
If (compteur2Points(chaine) = 2) Then
sep2 = InStrRev(chaine, ":")
Else
If (compteur2Points(chaine) = 3) Then 'cas de special access
sep2 = InStrRev(chaine, ":(")
End If
End If
utilisateur = right(left(chaine, sep2-1),sep2-sep1-1)
droits=right(chaine, len(chaine)-sep2)
cas0=chemin & "|" & utilisateur & "|" & droits
End If
'End If
End Function
Function cas1(chaine)
chaine=trim(chaine)
If (Instr(chaine, "Everyone") <> 0) Then
sepT=Instr(chaine, "Everyone")
chaine = right(chaine, len(chaine)-sepT+1)
'WScript.echo "chaine " & chaine
cas1=left(chaine, 8) & "|" & right(chaine, len(chaine) - (septT+9))
'WScript.echo "cas1 pour Everyone : " & cas1
Else
Dim i
i=Instr(chaine, ":") 'prend le premier ":" rencontré donc pas de problème pour le special access
cas1=left(chaine, i-1) & "|" & right(chaine, len(chaine)-i)
cas1=trim(cas1)
'WScript.echo "cas1 : " & cas1
End If
End Function
'forme du tableau final : chemin|utilisateur|Hérité|Lecture|Ecriture|Execution
Sub affectationDroitsCas2(ligne, P) 'P:permissions de départ Autoriser ou Refuser
If (Instr(ligne, "FILE_READ") <> 0 OR Instr(ligne, "GENERIC_READ") <> 0) Then
tableau(4)="-"
If (P=True) Then
tableau(3)="O"
Else
If (P=False) Then
tableau(3)="N"
End If
End If
Else
If (Instr(ligne, "FILE_WRITE") <> 0 OR Instr(ligne, "GENERIC_WRITE") <> 0) Then
tableau(4)="-"
If (P=True) Then
tableau(4)="O"
Else
If (boolOk=False) Then
tableau(4)="N"
End If
End If
Else
If (Instr(ligne,"FILE_EXECUTE") <> 0 OR Instr(ligne, "GENERIC_EXECUTE") <> 0) Then
tableau(4)="-"
If (P=True) Then
tableau(5)="O"
'WScript.echo "executer"
Else
If (P=False) Then
tableau(5)="N"
End If
End If
End If
End If
End If
End Sub
Sub gererDroits(droits)
If (Instr(droits, "F") <> 0) Then 'l'utilisateur a tous les droits
tableau(3)="O"
tableau(4)="O"
tableau(5)="O"
Else
If (Instr(droits, "C") <> 0) Then
tableau(3)="O"
tableau(4)="O"
tableau(5)="O"
Else
If (Instr(droits, "R") <> 0) Then
tableau(3)="N"
tableau(4)="N"
tableau(5)="N"
End If
End If
End If
'héritage
If (Instr(droits, "(CI)") <> 0 Or Instr(droits, "(OI)") <> 0 Or Instr(droits, "(IO)") <> 0 ) Then
tableau(2)="O"
End If
End sub
'permet de déterminer si on est sur une ligne contenant (special access:)
Function compteur2Points(chaine)
Dim cpt, chaineTmp, i 'indice
cpt = 0
i=Instr(chaine, ":") 'on est sûr qu'il y en a au moins un sur la ligne et au maximum il y en a 2
cpt = 1
chaineTmp=right(chaine, len(chaine)-i)
Do While (Instr(chaineTmp, ":") <> 0)
i=Instr(chaineTmp, ":")
cpt = cpt + 1
chaineTmp=right(chaineTmp, len(chaineTmp)-i)
Loop
compteur2Points=cpt
End Function
Sub ouvertureCas0()
For i=0 to Ubound(tableau)-1
tableau(i)="-"
Next
chaineTotale = ""
For i=0 to Ubound(tableau)-1
chaineTotale=chaineTotale & tableau(i) & ";"
Next
End Sub
Sub ouvertureCas1() 'fonction gardant le chemin précédent
For i=1 to Ubound(tableau)-1
tableau(i)="-"
Next
chaineTotale = ""
For i=0 to Ubound(tableau)-1
chaineTotale=chaineTotale & tableau(i) & ";"
Next
End Sub
Sub fermetureTableau() 'fonction fermant le tableau càd le copiant dans le fichier
For i = 0 to Ubound(tableau)-1
chaineLigne=chaineLigne & tableau(i) & ";"
Next
chaineLigne=chaineLigne & vbcrlf
For i = 2 to Ubound(tableau)-1
tableau(i) = "-"
Next
'WScript.echo chaineLigne
'chaineTotale=chaineLigne & vbcrlf & chaineTotale 'chaine finale contenant tous les droits
End Sub
Sub ecritureSortie(chaineF)
Set sortie = FSO.CreateTextFile("perms.txt")
With sortie
.writeLine chaineF
End With
End Sub
Conclusion
J'espère que ces programmes vont aider du monde car j'en ai vu pas mal qui galérait pour ce type de demande.
Historique
- 08 janvier 2008 10:38:33 :
- Réécriture du code
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Récupérer la liste des fichiers .gif dans un répertoire [ par hub ]
Salut à tous,Comment récupérer la liste des fichiers d'un répertoire (en les filtrant).En effet, je souhaiterais récupérer dans un tableau tous les no
liste des répertoire avec FTP [ par djof22 ]
Salut à tous,je suis en stage et j'ai un problème assez urgentJe fais un logiciel de FTP(pour AS400). Tout va très bien sauf que pour lister tous les
Fichiers en PDF [ par zebre ]
je voudrai mettre dans un répertoire la liste des fichiers que je récupère au format pdf.je vous explique:je récupère la liste des fichiers contenus d
.net lister les droits d'accès d'un répertoire et sous répertoire [ par aaymon888 ]
Bonjour,Je désire lister les droits d'accès d'un répertoire et sous répertroires.Mais je ne sais pas comment lire les les droits d'accès.c'est impossi
changer les droits sur un répertoire [ par Thanos_the_yopper ]
voila mon probleme :j'ai une appli qui doit ecrire un fichier ... le probleme c'est que si on se connecte sur Win2000 ou XP et que la personne n'a pas
Enumération des droits et groupes sur un répertoire [ par didierlaroche ]
Bonjour à tous,Je cherche à faire un état récapitulatif des droits par rapport aux groupes et/ou utilisateurs de Windows NT sur un répertoire.Le but é
Récuperer la liste des fichiers d'un répertoire internet [ par oxboz ]
Salut ... Je suis débutant en C# ,(2 semaines de pratique) et j'aimerai récupérer la liste des fichiers d'un répertoire sur le net
Liste de fichiers et sous-répertoire dans feuille Excel [ par jr10 ]
Bonjour, Pour faire cette liste, Je dois plutôt utiliser - DIR - Ou FileSearch et compagnie Merci de tout coup de main car j'ai du mal à démarre
Liste de fichiers et sous-répertoire dans feuille Excel [ par jr10 ]
Bonjour, Pour faire cette liste, Je dois plutôt utiliser - DIR - Ou FileSearch et compagnie Merci de tout coup de main car j'ai du mal à démarre
droits sur un répertoire [ par pricrot ]
Bonjour J'souhaite créer des répertoire au nom ( de connexion) de chaque utilisateur. Mais j'ai un gros problème. J'ai bien fait le script qui me pe
|
Derniers Blogs
PARUTION DE MON LIVRE SUR WPF 4PARUTION DE MON LIVRE SUR WPF 4 par odewit
La 2e édition de mon livre sur WPF sort aujourd'hui en version numérique et lundi en version papier :-)
L'ouvrage présente de façon approfondie les fonctionnalités de WPF 4 : graphisme 2D et 3D, animation, multimédia, interfaces utilisateur, databind...
Cliquez pour lire la suite de l'article par odewit EDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTINGEDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTING par Matthieu MEZIL
Une des raisons pour lesquelles j'adore l'Entity Framework est la puissance de son mapping. Beaucoup de développeurs pour ne pas dire la plus part n'en n'ont pas conscience. Pour rappel, j'ai réalisé des videos (en anglais) sur le mapping . Certains scena...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES[WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES par jay
Lorsque l'on développe des applications .NET, les exceptions non gérées dans des threads ont le désagréable effet de terminer le processus courant.
Dans l'exemple suivant.......(read more) ...
Cliquez pour lire la suite de l'article par jay WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS)WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS) par coq
Ceux d'entre nous qui analysent des dumps d'applications .NET (notamment ceux créés via WER après un crash) en dehors de l'environnement initial ont probablement tous été confrontés au moins une fois au message suivant, à la saisie d'une commande SOS ...
Cliquez pour lire la suite de l'article par coq
Forum
RE : WEBBROWSERRE : WEBBROWSER par lediablo
Cliquez pour lire la suite par lediablo
Logiciels
Microsoft Office (2010)MICROSOFT OFFICE (2010)Microsoft Office 2010 offre de nouveaux moyens flexibles et puissants pour optimiser votre travai... Cliquez pour télécharger Microsoft Office SeaMonkey (2.0.7)SEAMONKEY (2.0.7)Le projet SeaMonkey est issu d'un effort communautaire pour developper une application tout en un... Cliquez pour télécharger SeaMonkey Safari (5.0.2)SAFARI (5.0.2)Le navigateur d'Apple a lui aussi été mis à jour, aussi bien dans sa mouture Windows que celle po... Cliquez pour télécharger Safari Mozilla FireFox (4.0 béta 5)MOZILLA FIREFOX (4.0 BéTA 5)Firefox 4.0 béta 5
L'une des nouveautés visibles les plus attendues réside sans doute dans l'a... Cliquez pour télécharger Mozilla FireFox Mozilla Firefox (3.6.9)MOZILLA FIREFOX (3.6.9)Firefox 3.6.9 corrige les problèmes suivants :
* Introduced support for the X-FRAME-OPTION... Cliquez pour télécharger Mozilla Firefox
|