53111
14.09.2007, aktualisiert am 07.12.2007
6708
2
0
Code erklären Ordnerrechte ändern
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?
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?
zielfile ="c:\TEST\1.txt"
' Zugriff auf WMI
Set wmi = GetObject("winmgmts:")
' "Jeder" soll die Datei nur lesen dürfen, das Löschen wird explizit verboten
' "Administrator" soll alle Rechte erhalten
Set ACE1 = CreateACE(wmi, 1, 0, SetTrustee(wmi, "Benutzer"))
Set ACE2 = CreateACE(wmi, 64, 1, SetTrustee(wmi, "Benutzer"))
Set ACE3 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren"))
Set ACE4 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "test"))
' die beiden ACEs werden in einem Variablenfeld gespeichert
newdacl = Array(ACE1, ACE2, ACE3, ACE4)
' die Datei, die diese Rechte erhalten soll, wird angesprochen
Set fileinstance = GetFile(wmi,zielfile)
' der alte Security Descriptor wird geöffnet
retval = fileinstance.getsecuritydescriptor(sec)
' die neue DACL ersetzt die alte DACL
sec.Properties_.Item("dacl") = newdacl
' der geänderte Security Descriptor wird in die Datei zurückgeschrieben
retval = fileinstance.setsecuritydescriptor(sec)
Function GetFile(wmi, filename)
' öffnet eine Datei
Set GetFile = wmi.Get("Win32_LogicalFileSecuritySetting='" & filename & "'")
End Function
Function CreateACE(wmi, AccessMask, AceType, objTrustee)
' legt einen ACE an
Set objAce = wmi.Get("Win32_Ace").SpawnInstance_
objAce.Properties_.Item("AccessMask") = AccessMask
objAce.Properties_.Item("AceFlags") = 3
objAce.Properties_.Item("AceType") = AceType
objAce.Properties_.Item("Trustee") = objTrustee
Set CreateACE = objAce
End Function
Function SetTrustee(wmi, account)
If Left(account,2) = "\\" Then
konto = Mid(account, 3)
Else
konto = account
End If
infos = Split(konto, "\")
If UBound(infos) = 0 Then
'SYS: Windows Script Host Runtime Library
Set wshnet = CreateObject("WScript.Network")
UserName = infos(0)
ComputerName = wshnet.ComputerName
Else
UserName = infos(1)
ComputerName = infos(0)
End If
' legt ein Win32_Trustee-Objekt an
Set objTrustee = wmi.Get("Win32_Trustee").SpawnInstance_
objTrustee.Domain = ComputerName
objTrustee.Name = UserName
objTrustee.Properties_.Item("SID") = GetBinarySID(ComputerName, UserName)
Set SetTrustee = objTrustee
End Function
Function GetBinarySID(ComputerName, UserName)
' ** ermittelt binäre SID eines Benutzerkontos
On Error Resume Next
Set wmi = GetObject("winmgmts:\\" & ComputerName)
If Err.number<>0 Then
MsgBox "Konnte \\" & ComputerName & " nicht erreichen!"
WScript.Quit
End If
On Error Goto 0
wql = "select * from win32_account where name='" & UserName & "'"
Set result = wmi.ExecQuery(wql)
counter = 0
For each entry in result
counter = counter + 1
sid = entry.SID
Next
Set obj = wmi.Get("Win32_SID.SID=""" & sid & """")
GetBinarySID = obj.Properties_.Item("BinaryRepresentation").Value
End Function
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 68649
Url: https://administrator.de/contentid/68649
Ausgedruckt am: 20.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar