Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Rechte per script ändern

Frage Entwicklung VB for Applications

Mitglied: sisa2002

sisa2002 (Level 1) - Jetzt verbinden

09.12.2007 um 18:28 Uhr, 6008 Aufrufe

Hallo,

ich habe mit unten angegebenem Code die Rechte einer Datei per script geändert. Das funktioniert auch soweit. Leider werden nachdem ich das Script habe laufen lassen die geänderten Rechte nicht unter den Dateieigenschaften/Sicherheitseinstellungen angezeigt. Wenn ich aber ein Script zum auslesen der Dateirechte benutzte, wird bestätigt das die Rechte geändert wurden.

Hat jemand eine Idee was ich falsch gemacht habe, oder was ich tun muss das die geänderten Rechte angezeigt werden ?

Danke !


zielfile ="c:\TEST\1.txt"
01.
' Zugriff auf WMI 
02.
Set wmi = GetObject("winmgmts:") 
03.
' "Jeder" soll die Datei nur lesen dürfen, das Löschen wird explizit verboten 
04.
' "Administrator" soll alle Rechte erhalten 
05.
Set ACE1 = CreateACE(wmi, 1, 0, SetTrustee(wmi, "Benutzer")) 
06.
Set ACE2 = CreateACE(wmi, 64, 1, SetTrustee(wmi, "Benutzer")) 
07.
Set ACE3 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren")) 
08.
Set ACE4 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "test")) 
09.
 
10.
' die beiden ACEs werden in einem Variablenfeld gespeichert 
11.
newdacl = Array(ACE1, ACE2, ACE3, ACE4) 
12.
 
13.
' die Datei, die diese Rechte erhalten soll, wird angesprochen 
14.
Set fileinstance = GetFile(wmi,zielfile) 
15.
 
16.
' der alte Security Descriptor wird geöffnet 
17.
retval = fileinstance.getsecuritydescriptor(sec) 
18.
 
19.
' die neue DACL ersetzt die alte DACL 
20.
sec.Properties_.Item("dacl") = newdacl 
21.
 
22.
' der geänderte Security Descriptor wird in die Datei zurückgeschrieben 
23.
retval = fileinstance.setsecuritydescriptor(sec) 
24.
 
25.
 
26.
 
27.
Function GetFile(wmi, filename) 
28.
' öffnet eine Datei 
29.
Set GetFile = wmi.Get("Win32_LogicalFileSecuritySetting='" & filename & "'") 
30.
End Function 
31.
 
32.
 
33.
Function CreateACE(wmi, AccessMask, AceType, objTrustee) 
34.
' legt einen ACE an 
35.
Set objAce = wmi.Get("Win32_Ace").SpawnInstance_ 
36.
objAce.Properties_.Item("AccessMask") = AccessMask 
37.
objAce.Properties_.Item("AceFlags") = 3 
38.
objAce.Properties_.Item("AceType") = AceType 
39.
objAce.Properties_.Item("Trustee") = objTrustee 
40.
Set CreateACE = objAce 
41.
End Function 
42.
 
43.
 
44.
Function SetTrustee(wmi, account) 
45.
If Left(account,2) = "\\" Then 
46.
konto = Mid(account, 3) 
47.
Else 
48.
konto = account 
49.
End If 
50.
infos = Split(konto, "\") 
51.
If UBound(infos) = 0 Then 
52.
'SYS: Windows Script Host Runtime Library 
53.
Set wshnet = CreateObject("WScript.Network") 
54.
UserName = infos(0) 
55.
ComputerName = wshnet.ComputerName 
56.
Else 
57.
UserName = infos(1) 
58.
ComputerName = infos(0) 
59.
End If 
60.
 
61.
 
62.
' legt ein Win32_Trustee-Objekt an 
63.
Set objTrustee = wmi.Get("Win32_Trustee").SpawnInstance_ 
64.
objTrustee.Domain = ComputerName 
65.
objTrustee.Name = UserName 
66.
 
67.
objTrustee.Properties_.Item("SID") = GetBinarySID(ComputerName, UserName) 
68.
Set SetTrustee = objTrustee 
69.
End Function 
70.
 
71.
 
72.
Function GetBinarySID(ComputerName, UserName) 
73.
' ** ermittelt binäre SID eines Benutzerkontos 
74.
On Error Resume Next 
75.
Set wmi = GetObject("winmgmts:\\" & ComputerName) 
76.
If Err.number<>0 Then 
77.
MsgBox "Konnte \\" & ComputerName & " nicht erreichen!" 
78.
WScript.Quit 
79.
End If 
80.
On Error Goto 0 
81.
 
82.
wql = "select * from win32_account where name='" & UserName & "'" 
83.
Set result = wmi.ExecQuery(wql) 
84.
counter = 0 
85.
For each entry in result 
86.
counter = counter + 1 
87.
sid = entry.SID 
88.
Next 
89.
 
90.
 
91.
Set obj = wmi.Get("Win32_SID.SID=""" & sid & """") 
92.
GetBinarySID = obj.Properties_.Item("BinaryRepresentation").Value 
93.
End Function
Ähnliche Inhalte
Batch & Shell
Script Lokales Admin Passwort ändern (3)

Frage von MaxBerg zum Thema Batch & Shell ...

Datenbanken
MySQL bearbeiten - Rechte auf User ändern (6)

Frage von istike2 zum Thema Datenbanken ...

VB for Applications
gelöst Inhalt einer XML Datei Script ändern (4)

Frage von chris27584 zum Thema VB for Applications ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Batch & Shell
Batch Programm verhalten bei shoutdown -p (18)

Frage von Michael-ITler zum Thema Batch & Shell ...

Router & Routing
Freigabe aus anderem Netz nicht erreichbar (15)

Frage von McLion zum Thema Router & Routing ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...