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

Rechte per script ändern

Frage Entwicklung VB for Applications

Mitglied: sisa2002

sisa2002 (Level 1) - Jetzt verbinden

09.12.2007 um 18:28 Uhr, 5970 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
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Variablen in bash-script ändern (3)

Frage von cptkrabbe zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...