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

Code erklären Ordnerrechte ändern

Mitglied: 53111

53111 (Level 1)

14.09.2007, aktualisiert 07.12.2007, 6178 Aufrufe, 2 Kommentare

Hallo ich habe folgendes mit google gefunden und schon ein wenig verändert. ich möchte ein script schreiben was mit ordnerrechte ändert und mit dem ich dann einfach für einen bestimmten ordner die rechte auf einen schlag ändern kann.
mit diesem script ändert man die dateirechte. wie macht man das für ordner?


Wie mache ich es eine Benutzergrupper für den ordner komplett zu entfernen oder den zugriff zu verweigern?
nach welchem system funktioniert "Set ACE3 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren"))"? was sind das für Zahlen?
Was sind Trustee Objekte?
Was ist da gegenstück zu "Win32_LogicalFileSecuritySetting" damit das mit ordnern funktionier?

01.
zielfile ="c:\TEST\1.txt"
02.

03.
' Zugriff auf WMI
04.
Set wmi = GetObject("winmgmts:")
05.
' "Jeder" soll die Datei nur lesen dürfen, das Löschen wird explizit verboten
06.
' "Administrator" soll alle Rechte erhalten
07.
Set ACE1 = CreateACE(wmi, 1, 0, SetTrustee(wmi, "Benutzer"))
08.
Set ACE2 = CreateACE(wmi, 64, 1, SetTrustee(wmi, "Benutzer"))
09.
Set ACE3 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren"))
10.
Set ACE4 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "test"))
11.

12.
' die beiden ACEs werden in einem Variablenfeld gespeichert
13.
newdacl = Array(ACE1, ACE2, ACE3, ACE4)
14.

15.
' die Datei, die diese Rechte erhalten soll, wird angesprochen
16.
Set fileinstance = GetFile(wmi,zielfile)
17.

18.
' der alte Security Descriptor wird geöffnet
19.
retval = fileinstance.getsecuritydescriptor(sec)
20.

21.
' die neue DACL ersetzt die alte DACL
22.
sec.Properties_.Item("dacl") = newdacl
23.

24.
' der geänderte Security Descriptor wird in die Datei zurückgeschrieben
25.
retval = fileinstance.setsecuritydescriptor(sec)
26.

27.

28.

29.
Function GetFile(wmi, filename)
30.
' öffnet eine Datei
31.
Set GetFile = wmi.Get("Win32_LogicalFileSecuritySetting='" & filename & "'")
32.
End Function
33.

34.

35.
Function CreateACE(wmi, AccessMask, AceType, objTrustee)
36.
' legt einen ACE an
37.
Set objAce = wmi.Get("Win32_Ace").SpawnInstance_
38.
objAce.Properties_.Item("AccessMask") = AccessMask
39.
objAce.Properties_.Item("AceFlags") = 3
40.
objAce.Properties_.Item("AceType") = AceType
41.
objAce.Properties_.Item("Trustee") = objTrustee
42.
Set CreateACE = objAce
43.
End Function
44.

45.

46.
Function SetTrustee(wmi, account)
47.
If Left(account,2) = "\\" Then
48.
konto = Mid(account, 3)
49.
Else
50.
konto = account
51.
End If
52.
infos = Split(konto, "\")
53.
If UBound(infos) = 0 Then
54.
'SYS: Windows Script Host Runtime Library
55.
Set wshnet = CreateObject("WScript.Network")
56.
UserName = infos(0)
57.
ComputerName = wshnet.ComputerName
58.
Else
59.
UserName = infos(1)
60.
ComputerName = infos(0)
61.
End If
62.

63.

64.
' legt ein Win32_Trustee-Objekt an
65.
Set objTrustee = wmi.Get("Win32_Trustee").SpawnInstance_
66.
objTrustee.Domain = ComputerName
67.
objTrustee.Name = UserName
68.

69.
objTrustee.Properties_.Item("SID") = GetBinarySID(ComputerName, UserName)
70.
Set SetTrustee = objTrustee
71.
End Function
72.

73.

74.
Function GetBinarySID(ComputerName, UserName)
75.
' ** ermittelt binäre SID eines Benutzerkontos
76.
On Error Resume Next
77.
Set wmi = GetObject("winmgmts:\\" & ComputerName)
78.
If Err.number<>0 Then
79.
MsgBox "Konnte \\" & ComputerName & " nicht erreichen!"
80.
WScript.Quit
81.
End If
82.
On Error Goto 0
83.

84.
wql = "select * from win32_account where name='" & UserName & "'"
85.
Set result = wmi.ExecQuery(wql)
86.
counter = 0
87.
For each entry in result
88.
counter = counter + 1
89.
sid = entry.SID
90.
Next
91.

92.

93.
Set obj = wmi.Get("Win32_SID.SID=""" & sid & """")
94.
GetBinarySID = obj.Properties_.Item("BinaryRepresentation").Value
95.
End Function
Mitglied: 53111
17.09.2007 um 11:59 Uhr
ich bin jetzt bei folgendem stand: schön wäre wenn man noch mit checkboxen/radiobuttons auswählen kann welche der ordner bearbeitet werden sollen. dann müsste man das script für mehrer nutzeränderungen nur einmal ausführen und könnte mehrer nutzer auf einmal bearbeiten. hat jemand eine idee wie man das machen könnte?


01.
DIM ordnerarray
02.
DIM FSO        ' Variable für den Zugriff auf das File System Object
03.
DIM objOrdner    ' Variable für den Ordner, in dem die Unterordner entstehen
04.
DIM objUnterordner ' Variable für die Unterordner
05.
DIM Ordner     ' Variabel für den Ordner, in dem die Unterordner entstehen
06.

07.
ordnerarray = Array(100)
08.

09.

10.
Ordner = "H:\"
11.

12.
Set FSO = CreateObject("Scripting.FileSystemObject")
13.

14.
Set objOrdner = FSO.GetFolder(Ordner)
15.

16.

17.
   For Each objUnterordner in objOrdner.SubFolders
18.
    
19.

20.
     x = x & objUnterordner.Name & chr(13)   
21.
  
22.
    Next
23.
    
24.
     
25.

26.
OrdnerUndNutzer =InputBox("Ordner und Dateien in H:\" & chr(13) & chr(13) & x & chr(13) &_
27.
"Bitte hier den Ordnernamen eingeben. (Ordnername entspricht dem Benutzernamen des Nutzers mit Vollzugriff)",,"Ordnername")
28.
zielfile = "H:\" & OrdnerUndNutzer
29.

30.
' Zugriff auf WMI
31.
Set wmi = GetObject("winmgmts:")
32.
' "Jeder" soll die Datei nur lesen dürfen, das Löschen wird explizit verboten
33.
' "Administrator" soll alle Rechte erhalten
34.

35.
 Set ACE1 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren"))
36.
              Set ACE2 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, OrdnerUndNutzer))
37.
              
38.
              
39.
              newdacl = Array(ACE1, ACE2)
40.

41.

42.

43.

44.

45.
' die Datei, die diese Rechte erhalten soll, wird angesprochen
46.
Set fileinstance = GetFile(wmi,zielfile)
47.

48.
' der alte Security Descriptor wird geöffnet
49.
retval = fileinstance.getsecuritydescriptor(sec)
50.

51.
' die neue DACL ersetzt die alte DACL
52.
sec.Properties_.Item("dacl") = newdacl
53.

54.
' der geänderte Security Descriptor wird in die Datei zurückgeschrieben
55.
retval = fileinstance.setsecuritydescriptor(sec)
56.

57.
' erledigt
58.
If retval = 0 Then
59.
MsgBox "Neue Zugriffsrechte eingetragen"
60.
Else
61.
MsgBox "Konnte Zugriffsrechte nicht speichern." & vbCrLf _
62.
& "Möglicherweise fehlen Ihnen die Berechtigungen, oder die Datei existiert nicht."
63.
End If
64.

65.
Function GetFile(wmi, filename)
66.
' öffnet eine Datei
67.
Set GetFile = wmi.Get("Win32_LogicalFileSecuritySetting='" & filename & "'")
68.
End Function
69.

70.
Function CreateACE(wmi, AccessMask, AceType, objTrustee)
71.
' legt einen ACE an
72.
Set objAce = wmi.Get("Win32_Ace").SpawnInstance_
73.
objAce.Properties_.Item("AccessMask") = AccessMask
74.
objAce.Properties_.Item("AceFlags") = 3
75.
objAce.Properties_.Item("AceType") = AceType
76.
objAce.Properties_.Item("Trustee") = objTrustee
77.
Set CreateACE = objAce
78.
End Function
79.

80.
Function SetTrustee(wmi, account)
81.
If Left(account,2) = "\\" Then
82.
konto = Mid(account, 3)
83.
Else
84.
konto = account
85.
End If
86.
infos = Split(konto, "\")
87.
If UBound(infos) = 0 Then
88.
'SYS: Windows Script Host Runtime Library
89.
Set wshnet = CreateObject("WScript.Network")
90.
UserName = infos(0)
91.
ComputerName = wshnet.ComputerName
92.
Else
93.
UserName = infos(1)
94.
ComputerName = infos(0)
95.
End If
96.

97.
' legt ein Win32_Trustee-Objekt an
98.
Set objTrustee = wmi.Get("Win32_Trustee").SpawnInstance_
99.
objTrustee.Domain = ComputerName
100.
objTrustee.Name = UserName
101.

102.
objTrustee.Properties_.Item("SID") = GetBinarySID(ComputerName, UserName)
103.
Set SetTrustee = objTrustee
104.
End Function
105.

106.
Function GetBinarySID(ComputerName, UserName)
107.
' ** ermittelt binäre SID eines Benutzerkontos
108.
On Error Resume Next
109.
Set wmi = GetObject("winmgmts:\\" & ComputerName)
110.
If Err.number<>0 Then
111.
MsgBox "Konnte \\" & ComputerName & " nicht erreichen!"
112.
WScript.Quit
113.
End If
114.
On Error Goto 0
115.

116.
wql = "select * from win32_account where name='" & UserName & "'"
117.
Set result = wmi.ExecQuery(wql)
118.
counter = 0
119.
For each entry in result
120.
counter = counter + 1
121.
sid = entry.SID
122.
Next
123.
If counter = 0 Then
124.
MsgBox "Konnte \\" & ComputerName & "\" & UserName & " nicht erreichen!"
125.
WScript.Quit
126.
ElseIf counter>1 Then
127.
MsgBox "Zweideutiger Kontoname."
128.
WScript.Quit
129.
End If
130.

131.
Set obj = wmi.Get("Win32_SID.SID=""" & sid & """")
132.
GetBinarySID = obj.Properties_.Item("BinaryRepresentation").Value
133.
End Function
Bitte warten ..
Mitglied: sisa2002
07.12.2007 um 07:14 Uhr
Hallo,

ich habe den oben geposteten Quellcode zum ändern der Dateirechte genutzt. Jetzt habe ich noch das Problem das dies nach dem ändern der Rechte nicht über die Dateieigenschaften / Sicherheitseinstellungen sichtbar ist !

Hat jemand eine Idee woran das liegen könnte ?

Danke !
Bitte warten ..
Ähnliche Inhalte
Windows Server
Manage open files and sessions
gelöst Frage von thatsrightWindows Server10 Kommentare

Hola liebe Gemeinde, Ich hab mal ne frage Habe neu einen Filserver 2012r2, jetzt wollte/musste/sollte ich ein File schliesen, ...

Windows Userverwaltung
Identity and Access Management Programme
Frage von PulliWindows Userverwaltung1 Kommentar

Hallo, sind auf der Suche nach einem Marktführenden Produkt für Identity & Access Management. Folgendes Szenario möchten wir abbilden. ...

Batch & Shell
Drag and Drop in Powershell
gelöst Frage von mc-doubleyouBatch & Shell2 Kommentare

Hallo zusammen, inwischen habe ich mich von cmd zur Powershell vorgearbeitet, die Lösungen die mir Google aber so liefert ...

Batch & Shell
PowerShell Array Split and Remove
gelöst Frage von derhoeppiBatch & Shell1 Kommentar

Hallo, ich möchte ein weiteres Skript verfeinern. Das Skript lädt einen String aus einer CSV. Der String sieht nach ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 3 TagenHumor (lol)8 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 4 TagenWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 5 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 7 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Windows Server
Lange Wartezeiten beim speichern und öffnen auf Win Server 2019
Frage von installerWindows Server31 Kommentare

Hallo, habe ein Problem mit langen Wartezeiten beim öffnen / speichern von Office Dokumenten etc. auf Netzlaufwerken auf einem ...

Windows Server
Hyper-V- Manager
Frage von borjiaWindows Server14 Kommentare

Aufbau des Netzwerkes (siehe Bild) Ich würde gerne mit dem Hyper-V-Manager zwei drei zusätzliche Server installieren. Nur habe ich ...

Sicherheit
Welche Hosted Security Lösung könnt Ihr empfehlen?
gelöst Frage von Andre82msSicherheit11 Kommentare

Hallo, ich suche für eine Firma mit 26 Standorten eine Hosted Security-Lösung, welche möglichst viele Services vereint und deutschen ...

DNS
Sperren von Webseiten als ISP
Frage von RStrubDNS11 Kommentare

Hallo zusammen Wir haben die Auflage erhalten, diverse Webseiten für alle unsere Kundenanschlüsse zu sperren und die Anfrage an ...