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
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
VB6 + GRAPHVIZVB6 + GRAPHVIZ par nouirayosra
Cliquez pour lire la suite par nouirayosra
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|