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, 6074 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
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 ...

Visual Studio

Code-Optimierung

gelöst Frage von MarcoBornVisual Studio11 Kommentare

Hallo Forum, ich habe zur Zeit etliche Stellen in meinem Code, wo ich eine Variable mit etlichen Strings vergleichen ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement14 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware12 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...