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, 6049 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
Hosting & Housing
Fachwörter erklären
gelöst Frage von Jonas441Hosting & Housing7 Kommentare

Liebe Community, ich muss ein Praktikumsbericht schreiben und weiss die Bedeutung von ein paar Fachwörtern nicht. Ich hoffe ihr ...

Speicherkarten

Wer Kann Mir Dieses Phanomän Erklären

gelöst Frage von DomiZone1Speicherkarten20 Kommentare

Das Problem Ist: Wer Kann mir helfen warum das so ist

Windows Server

Ordnerrechte für lokale Benutzer

Frage von MasterSchlumpfWindows Server1 Kommentar

Hallo zusammen, ich möchte innerhalb unserer Domäne einen Ordner für alle Mitarbeiter freigeben. Leider gibt es einen Teil, welcher ...

Windows Server

PowerShell Script - Ordnerrechte setzen

Frage von desmondjamesWindows Server7 Kommentare

Hallo Community, ich bitte um Hilfe. Ich bin nicht so fit in Powershell, benötige aber ein Script. Ich habe ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 55 MinutenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 4 StundenCPU, RAM, Mainboards3 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 18 StundenRouter & Routing3 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör15 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...