www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Re: Rechte eines Homelaufwerks setzen
Autor:  Dr. Holger Schwichtenberg
E-mail:  Antworten bitte nur in das Forum!
Datum:  31.05.2004 19:41:49
Subject:  Re: Rechte eines Homelaufwerks setzen
Bezug zum Buch: 
Message:  Also, ich kann jetzt per Ferndiagnose auch nicht mehr dazu sagen. Aber ich habe eine andere Idee. Man kann das ganze auch mit WMI machen. Anbei eine Lösung in VBScript, die aber einfach nach VB.NET zu transferieren ist, wenn es unbedingt .NET sein soll :-)

Sub WMI_OrdnerRechte()

' --- Bindung
Set objServ = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!\\.\ROOT\CIMV2")
' ----- Erzeugung eines neuen SD
' --- Neue Instanz von Win32_SecurityDescriptor
Set objSDClass = objServ.Get("Win32_SecurityDescriptor")
Set oSD = objSDClass.SpawnInstance_()
oSD.Properties_.Item("ControlFlags") = 4
' --- ACEs erzeugen
Set oACE1 = MakeACE(FULL, 0, 0, MakeTrustee("byfang", "Everyone"))
Set oACE2 = MakeACE(FILE_LIST_DIRECTORY, 0, 0, MakeTrustee("it-objects.local", "Domain Admins"))
Set oACE3 = MakeACE(FULL, 0, 0, MakeTrustee("it-objects.local", "HS"))

' --- ACL zusammensetzen als Array von ACEs
dacl = Array(oACE1, oACE2, oACE3)
' --- ACL an SD zuweisen
oSD.Properties_.Item("DACL") = dacl

' --- SD an Ordner zuweisen
Set objWO = GetObject("winmgmts://.\root\cimv2:Win32_Directory.Name='d:\daten'")
objWO.ChangeSecurityPermissions oSD, 4

' --- SD an Ordner zuweisen
Set objWO = GetObject("winmgmts://.\root\cimv2:Win32_LogicalFileSecuritySetting.Path='d:\daten'")
'objWO.SetSecurityDescriptor oSD


' ### Erzeugung eines WIN32_Trustee-Objekts
Function MakeTrustee(strDomain, strName)
Dim objTrustee
Dim objUser ' As IADsUser
Dim Sid
If UCase(strName) = "EVERYONE" Then
   Sid = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Else
   Set objUser = GetObject("WinNT://" & strDomain & "/" & strName)
   Sid = objUser.Get("ObjectSID")
End If
Set objTrustee = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").SpawnInstance_
objTrustee.DOMAIN = strDomain
objTrustee.name = strName
objTrustee.Properties_.Item("SID") = Sid
Set MakeTrustee = objTrustee
End Function

' ####################################

' ### Erzeugung eines WIN_32ACE-Objekts
Function MakeACE(accessmask, AceFlags, AceType, objTrustee)
Dim objACE
Set objACE = GetObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Ace").SpawnInstance_
objACE.Properties_.Item("AccessMask") = accessmask
objACE.Properties_.Item("AceFlags") = AceFlags
objACE.Properties_.Item("AceType") = AceType
objACE.Properties_.Item("Trustee") = objTrustee
Set MakeACE = objACE
End Function

' ####################################



' *** Dateirechte
Const FULL = 2032127
Const NONE = 0
Const CHANGE = 1245462
Const FILE_READ_DATA = 1
Const FILE_LIST_DIRECTORY = 1
Const FILE_WRITE_DATA = 2
Const FILE_ADD_FILE = 2
Const FILE_APPEND_DATA = 4
Const FILE_ADD_SUBDIRECTORY = 4
Const FILE_READ_EA = 8
Const FILE_WRITE_EA = 16
Const FILE_EXECUTE = 32
Const FILE_TRAVERSE = 32
Const FILE_DELETE_CHILD = 64
Const FILE_READ_ATTRIBUTES = 128
Const FILE_WRITE_ATTRIBUTES = 256
Const Delete = 65536
Const READ_CONTROL = 131072
Const WRITE_DAC = 262144
Const WRITE_OWNER = 524288
Const Synchronize = 1048576

' *** ACEFLAG-Flags
Const ACEFLAG_INHERIT_ACE = 2
Const ACEFLAG_NO_PROPAGATE_INHERIT_ACE = 4
Const ACEFLAG_INHERIT_ONLY_ACE = 8
Const ACEFLAG_INHERITED_ACE = 16
Const ACEFLAG_VALID_INHERIT_FLAGS = 31
Const ACEFLAG_SUCCESSFUL_ACCESS = 64
Const ACEFLAG_FAILED_ACCESS = 128

' *** ACETYPE-Flags
Const ACETYPE_ACCESS_ALLOWED = 0
Const ACETYPE_ACCESS_DENIED = 1
Const ACETYPE_SYSTEM_AUDIT = 2

Antworten

  Zurück zum Forum



 .NET Framework-Programmierung -- C#, VB.NET, ASP.NET, u.a.
 Rechte eines Homelaufwerks setzen von AnkeKnfel  am 22.4.2004 1:14:30 PM
 Re: Rechte eines Homelaufwerks setzen von Dr. Holger Schwichtenberg  am 7.5.2004 2:30:06 AM
 Re: Rechte eines Homelaufwerks setzen von AnkeKnfel  am 17.5.2004 1:17:17 PM
 Re: Rechte eines Homelaufwerks setzen von Dr. Holger Schwichtenberg  am 17.5.2004 1:27:04 PM
 Re: Rechte eines Homelaufwerks setzen von AnkeKnfel  am 25.5.2004 2:59:16 PM
 Re: Rechte eines Homelaufwerks setzen von Dr. Holger Schwichtenberg  am 31.5.2004 7:41:49 PM
 Re: Rechte eines Homelaufwerks setzen von AlexanderZiegler  am 23.8.2006 3:54:47 PM
 Re: Rechte eines Homelaufwerks setzen von AnkeKnfel  am 1.6.2004 2:05:18 PM
 Re: Rechte eines Homelaufwerks setzen von AnkeKnfel  am 27.4.2004 10:45:58 AM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2023