Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung VB for Applications

Mitglied: 53111

53111 (Level 1)

14.09.2007, aktualisiert 07.12.2007, 5995 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Erkennung und -Abwehr
Port 7547 SOAP Remote Code Execution Attack Against DSL Modems Internet Storm Center (5)

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Windows Server
gelöst Word 2010 : Absatz - Abstand per GPO ändern (3)

Frage von johanna-p zum Thema Windows Server ...

Exchange Server
Exchange 2013, Outlook 2010 Standard-Absendeadresse ändern (4)

Frage von ingoue zum Thema Exchange Server ...

Batch & Shell
gelöst Findstr - code für schwieriger Abfrage gesucht (9)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...