Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Microsoft Microsoft Office

Zugriffsrechte von Ordnern mit VB-Script auslesen NEU

Mitglied: Kabadeluxe

Kabadeluxe (Level 1) - Jetzt verbinden

19.02.2013 um 13:27 Uhr, 2468 Aufrufe

Hallo

Ich habe mir mal erlaubt, einen Alten beitrag der schon 2 Jahre Alt ist nach vorne zu scheiben.
hier ist der Link vom Alten Forum:
http://www.administrator.de/frage/zugriffsrechte-von-ordnern-mit-vb-scr ...

Ich habe es kopiert, und in eine Excelliste eingefügt, und muss sagen ich bin sehr zufrieden. Ein Dank an den Scriptschrieber.

Nur ein Paar Fragen habe ich noch

Ich weiss nicht in welcher Spaten die Berechtigungen für Read Write..... und so weiter geschrieben werden.
Leider kenn ich mich nicht so gut aus, aber vieleicht hat jemand von euch etwas Ahnung und kann mir Helfen

Hier einmal der Ganze Code.

Option Explicit
Option Compare Text

Const FoldersPath = "D:\Temp" 'Start-Ordner

Const CsvFileName = "FolderUserRights.csv" 'Wird im Workbook-Pfad gespeichert

Const CsvDelim = ";" 'Beliebiges Trennzeichen festlegen
'______________________________________________________________________________________

'Spalte 1-4 = Path, Erstellungsdatum, Gruppe/Benutzername, G/B-Name-SID
Const CsvTextReserved = 4

'Control-Flag Infos verfügbar
Const SE_DACL_PRESENT = &H4

'Zugriffs-Flags, TitelText nach belieben festlegen
Const AF00 = "AF&;&H01;TitelText" 'OBJECT_INHERIT_ACE
Const AF01 = "AF&;&H02;TitelText" 'CONTAINER_INHERIT_ACE
Const AF02 = "AF&;&H04;TitelText" 'NO_PROPOGATE_INHERIT_ACE
Const AF03 = "AF&;&H08;TitelText" 'INHERIT_ONLY_ACE
Const AF04 = "AF&;&H10;TitelText" 'INHERIT_ACE"

'Zugriffs-Type
Const ATx0 = "AT=;&H00;TitelText" 'ACCESS_ALLOWED_ACE_TYPE

Const AT00 = "AT&;&H01;TitelText" 'ACCESS_DENIED_ACE_TYPE
Const AT01 = "AT&;&H02;TitelText" 'AUDIT

'Zugriffsrechte: Objektspezifisch
Const AM00 = "AM&;&H00000001;TitelText" 'DIR_LIST_DIRECTORY/FILE_READ_DATA
Const AM01 = "AM&;&H00000002;TitelText" 'DIR_ADD_FILE/FILE_WRITE_DATA
Const AM02 = "AM&;&H00000004;TitelText" 'DIR_ADD_SUBDIRECTORY/FILE_APPEND_DATA
Const AM03 = "AM&;&H00000008;TitelText" 'READ_NAMED_ATTRIBUTS
Const AM04 = "AM&;&H00000010;TitelText" 'WRITE_NAMED_ATTRIBUTS
Const AM05 = "AM&;&H00000020;TitelText" 'EXECUTE
Const AM06 = "AM&;&H00000040;TitelText" 'DELETE_CHILD
Const AM07 = "AM&;&H00000080;TitelText" 'READ_ATTRIBUTES
Const AM08 = "AM&;&H00000100;TitelText" 'WRITE_ATTRIBUTES

Const AMx1 = "AM=;&H001F01FF;TitelText" 'FILE_ALL_ACCESS"

'Zugriffsrechte: Standard --> Zugriffsrechte auf Objektspezifisch
Const AM16 = "AM&;&H00010000;TitelText" 'DELETE
Const AM17 = "AM&;&H00020000;TitelText" 'READ_ACL
Const AM18 = "AM&;&H00040000;TitelText" 'WRITE_ACL
Const AM19 = "AM&;&H00080000;TitelText" 'WRITE_OWNER
Const AM20 = "AM&;&H00100000;TitelText" 'SYNCHRONIZE

'Zugriffsrechte: Security-Descriptor SACL (System Access Control List)
Const AM24 = "AM&;&H01000000;TitelText" 'ACCESS_SYSTEM_SECURITY

'Zugriffsrechte Erweitert --> Zugriffsrechte auf Standard/Objektspezifisch
Const AM28 = "AM&;&H10000000;TitelText" 'GENERIC_ALL
Const AM29 = "AM&;&H20000000;TitelText" 'GENERIC_EXECUTE
Const AM30 = "AM&;&H40000000;TitelText" 'GENERIC_WRITE
Const AM31 = "AM&;&H80000000;TitelText" 'GENERIC_READ
'______________________________________________________________________________________

Const Msg0 = "Der Vorgang kann je nach Anzahl der Ordner einige Minuten dauern!"
Const Msg1 = "Der Csv-Export ist abgeschlossen."

Dim Fso As Object, ACL As Object, objWMIService As Object, CsvFile As Object
Dim CsvText As Variant, CsvSize As Integer

Sub GetFoldersAccessRights()
Dim CsvListe As Variant, CsvTitel As Variant, Token As Variant, i As Integer

If MsgBox(Msg0, vbOKCancel Or vbInformation, "Zugriffsrechte...") = vbCancel Then Exit Sub

CsvListe = Array(AF00, AF01, AF02, AF03, AF04, ATx0, AT00, AT01, AM00, AM01, AM02, AM03, AM04, AM05, AM06, AM07, AM08, AM16, AM17, AM18, AM19, AM20, AMx1)

CsvSize = UBound(CsvListe) + CsvTextReserved

ReDim CsvText(CsvSize): ReDim CsvTitel(CsvSize)

Set ACL = CreateObject("Scripting.Dictionary")

CsvTitel(0) = "Pfad"
CsvTitel(1) = "Erstellt"
CsvTitel(2) = "Benutzer"
CsvTitel(3) = "SID"

For i = 0 To UBound(CsvListe)
Token = Split(CsvListe(i), ";")
ACL.Add Token(0) & Hex(Token(1)), i + CsvTextReserved & ";" & Token(1)
CsvTitel(i + CsvTextReserved) = Token(2)
Next

Set Fso = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate,(TakeOwnership)}!\\.\root\cimv2")

Set CsvFile = Fso.CreateTextFile(ThisWorkbook.Path & "\" & CsvFileName)

CsvFile.WriteLine Join(CsvTitel, ";")

Call GetFolder(Fso.GetFolder(FoldersPath)): CsvFile.Close

MsgBox Msg1, vbInformation, "Csv-Export..."
End Sub

Private Sub GetFolder(ByRef Folder)
Dim Subfolder As Object, i As Integer

CsvText(0) = Folder.Path

If Folder.Name = "" Then
CsvText(1) = ""
Else
CsvText(1) = FormatDateTime(Folder.DateCreated, vbShortDate)
End If

Call GetSecuritySettings(Folder)

On Error Resume Next

For Each Subfolder In Folder.SubFolders
If Err.Number = 0 Then
Call GetFolder(Subfolder)
Else
Err.Clear
Call WriteCsvFile("Zugriff verweigert")
End If
Next
End Sub

Private Sub GetSecuritySettings(ByRef Folder)
Dim objFSS As Object, objSD As Object, objACL As Variant
Dim LastName As String, DoWrite As Boolean, i As Integer

On Error Resume Next

Set objFSS = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & Folder & "'")

If Err.Number <> 0 Then
Call WriteCsvFile("Nicht verfügbar"): Exit Sub
End If

On Error GoTo 0

If objFSS.GetSecurityDescriptor(objSD) = 0 Then
If (objSD.ControlFlags And SE_DACL_PRESENT) <> 0 Then
For Each objACL In objSD.DACL
With objACL
CsvText(2) = .Trustee.Name
CsvText(3) = .Trustee.SIDString

For i = 4 To CsvSize: CsvText(i) = "": Next

Call SetSecuritySettings("AM", .AccessMask)
Call SetSecuritySettings("AF", .AceFlags)
Call SetSecuritySettings("AT", .AceType)

CsvFile.WriteLine Join(CsvText, CsvDelim)
End With
Next
Else
Call WriteCsvFile("Nicht verfügbar")
End If
Else
Call WriteCsvFile("Nicht verfügbar")
End If
End Sub

Private Sub SetSecuritySettings(ByRef Target, ByVal Value)
Dim Key As Variant, Token As Variant

If ACL.Exists(Target & "=" & Hex(Value)) Then
Token = Split(ACL.Item(Target & "=" & Hex(Value)), ";")
CsvText(Token(0)) = "x"
Else
For Each Key In ACL.Keys
If Left(Key, 3) = Target & "&" Then
Token = Split(ACL.Item(Key), ";")
If (Value And CLng(Token(1))) Then CsvText(Token(0)) = "x"
End If
Next
End If
End Sub

Private Sub WriteCsvFile(ByRef Text)
Dim i As Integer

CsvText(2) = Text

For i = 3 To CsvSize: CsvText(i) = "": Next

CsvFile.WriteLine Join(CsvText, CsvDelim)
End Sub





Mich würde auch intreessieren, was das genau bedeutet





'Spalte 1-4 = Path, Erstellungsdatum, Gruppe/Benutzername, G/B-Name-SID
Const CsvTextReserved = 4

'Control-Flag Infos verfügbar
Const SE_DACL_PRESENT = &H4

'Zugriffs-Flags, TitelText nach belieben festlegen
Const AF00 = "AF&;&H01;TitelText" 'OBJECT_INHERIT_ACE
Const AF01 = "AF&;&H02;TitelText" 'CONTAINER_INHERIT_ACE
Const AF02 = "AF&;&H04;TitelText" 'NO_PROPOGATE_INHERIT_ACE
Const AF03 = "AF&;&H08;TitelText" 'INHERIT_ONLY_ACE
Const AF04 = "AF&;&H10;TitelText" 'INHERIT_ACE"

'Zugriffs-Type
Const ATx0 = "AT=;&H00;TitelText" 'ACCESS_ALLOWED_ACE_TYPE

Const AT00 = "AT&;&H01;TitelText" 'ACCESS_DENIED_ACE_TYPE
Const AT01 = "AT&;&H02;TitelText" 'AUDIT

'Zugriffsrechte: Objektspezifisch
Const AM00 = "AM&;&H00000001;TitelText" 'DIR_LIST_DIRECTORY/FILE_READ_DATA
Const AM01 = "AM&;&H00000002;TitelText" 'DIR_ADD_FILE/FILE_WRITE_DATA
Const AM02 = "AM&;&H00000004;TitelText" 'DIR_ADD_SUBDIRECTORY/FILE_APPEND_DATA
Const AM03 = "AM&;&H00000008;TitelText" 'READ_NAMED_ATTRIBUTS
Const AM04 = "AM&;&H00000010;TitelText" 'WRITE_NAMED_ATTRIBUTS
Const AM05 = "AM&;&H00000020;TitelText" 'EXECUTE
Const AM06 = "AM&;&H00000040;TitelText" 'DELETE_CHILD
Const AM07 = "AM&;&H00000080;TitelText" 'READ_ATTRIBUTES
Const AM08 = "AM&;&H00000100;TitelText" 'WRITE_ATTRIBUTES

Const AMx1 = "AM=;&H001F01FF;TitelText" 'FILE_ALL_ACCESS"

'Zugriffsrechte: Standard --> Zugriffsrechte auf Objektspezifisch
Const AM16 = "AM&;&H00010000;TitelText" 'DELETE
Const AM17 = "AM&;&H00020000;TitelText" 'READ_ACL
Const AM18 = "AM&;&H00040000;TitelText" 'WRITE_ACL
Const AM19 = "AM&;&H00080000;TitelText" 'WRITE_OWNER
Const AM20 = "AM&;&H00100000;TitelText" 'SYNCHRONIZE

'Zugriffsrechte: Security-Descriptor SACL (System Access Control List)
Const AM24 = "AM&;&H01000000;TitelText" 'ACCESS_SYSTEM_SECURITY

'Zugriffsrechte Erweitert --> Zugriffsrechte auf Standard/Objektspezifisch
Const AM28 = "AM&;&H10000000;TitelText" 'GENERIC_ALL
Const AM29 = "AM&;&H20000000;TitelText" 'GENERIC_EXECUTE
Const AM30 = "AM&;&H40000000;TitelText" 'GENERIC_WRITE
Const AM31 = "AM&;&H80000000;TitelText" 'GENERIC_READ

Danke schon mal an alle die mir Helfen

Gruss Thomas


PS: Ein echt spitzen Forum, hoffe ich kann auch mal jemanden Helfen
Ähnliche Inhalte
Entwicklung
VB Script gesucht um Videodateien auslesen zu können.
gelöst Frage von templierEntwicklung7 Kommentare

Hallo zusammen, ich habe einen Kunden der auf seinem SAN hunderte von Präsentationsvideos angesammelt hat. Diese sollen nun in ...

VB for Applications
VB Script rekursiv statt nur ein Ordner
gelöst Frage von SaschaaaaaVB for Applications4 Kommentare

Hallo Community, ich beginne gerade erst mich in die verschiedensten Sprachen einzulesen und habe momentan ein kleines Problem bei ...

VB for Applications
VB-Script in VB-Script starten und Parameter übergeben
gelöst Frage von denkisVB for Applications7 Kommentare

Hallo liebe Scriptgemeinde, ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche ...

VB for Applications
Neue Zeile in Excel per VB Script
gelöst Frage von TheFalconVB for Applications1 Kommentar

Hallo zusammen, ich habe ein Script welches soweit auch funktioniert. Ich möchte jetzt aber gerne, dass die Werte fortlaufend ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...