Hallo!
Die dll ADSSECURITYLib ist in der Active Directory SDK (ADSI) enthalten!.
mfg
mike
Imports System.IO
Imports System.Diagnostics
Imports ADSSECURITYLib
Imports Scripting
Imports ActiveDs
Namespace Network
Public Class FolderPermissions
#Region " declarations "
Private share As New NetShare
Private adsSecurity As adsSecurity
Private securityDescriptor As securityDescriptor
Private discretionaryAcl As Object
Private accessControlEntry As Object
Private accessControlEntryFiles As Object
Private accessControlEntryFolders As Object
Private adsSid As Object
Private adsSidHex As Object
Private Const ADMINISTRATOR As String = "Administrator"
Private Const ADS_ACEFLAG_INHERIT_ACE = &H2
Private Const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &H4
Private Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8
Private Const ADS_ACEFLAG_INHERITED_ACE = &H10
Private Const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &H1F
Private Const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &H40
Private Const ADS_ACEFLAG_FAILED_ACCESS = &H80
'Permission Type: Allow or Deny
Private Const ADS_ACETYPE_ACCESS_ALLOWED = &H0
Private Const ADS_ACETYPE_ACCESS_DENIED = &H1
'Permissions: Read, Write, FullControl
Private Const ADS_RIGHT_GENERIC_READ = &H80000000
Private Const ADS_RIGHT_GENERIC_WRITE = &H40000000
Private Const ADS_RIGHT_GENERIC_EXECUTE = &H20000000
Private Const ADS_RIGHT_GENERIC_ALL = &H10000000
Private Const ADS_SID_RAW = 0
Private Const ADS_SID_HEXSTRING = 1
Private Const ADS_SID_SAM = 2
Private Const ADS_SID_UPN = 3
Private Const ADS_SID_SDDL = 4
Private Const ADS_SID_WINNT_PATH = 5
Private Const ADS_SID_ACTIVE_DIRECTORY_PATH = 6
Private Const ADS_SID_SID_BINDING = 7
#End Region
#Region " methods "
Public Function SetUserPermissions(ByVal rootPath As String, ByVal _
username As String) As Boolean
Dim userDirectory As String
Dim homeDirectory As String
Dim profilDirectory As String
Dim logonDirectory As String
Try
If Not Directory.Exists(rootPath) Then
Directory.CreateDirectory(rootPath)
End If
userDirectory = rootPath & "\" & username
homeDirectory = rootPath & "\" & username & "\" & "Home"
logonDirectory = rootPath & "\" & username & "\" & "Logon"
profilDirectory = rootPath & "\" & username & "\" & "Profil"
Directory.CreateDirectory(userDirectory)
Me.RemoveInheritedAce(userDirectory)
Me.share.CreateWinShare(userDirectory, username & "$")
Me.ApplyPermissions(userDirectory, "PTS\" & username, _
Me.ADS_RIGHT_GENERIC_READ)
Me.ApplyPermissions(userDirectory, "PTS\" & Me.ADMINISTRATOR, _
Me.ADS_RIGHT_GENERIC_ALL)
Directory.CreateDirectory(homeDirectory)
Me.ApplyPermissions(homeDirectory, "PTS\" & username, _
Me.ADS_RIGHT_GENERIC_ALL)
Me.ApplyPermissions(homeDirectory, "PTS\" & Me.ADMINISTRATOR, _
Me.ADS_RIGHT_GENERIC_ALL)
Directory.CreateDirectory(logonDirectory)
Me.ApplyPermissions(logonDirectory, "PTS\" & username, _
Me.ADS_RIGHT_GENERIC_WRITE + ADS_RIGHT_GENERIC_READ + _
ADS_RIGHT_GENERIC_EXECUTE)
Me.ApplyPermissions(logonDirectory, "PTS\" & Me.ADMINISTRATOR, _
Me.ADS_RIGHT_GENERIC_ALL)
Directory.CreateDirectory(profilDirectory)
Me.ApplyPermissions(profilDirectory, "PTS\" & username, _
Me.ADS_RIGHT_GENERIC_ALL)
Me.ApplyPermissions(profilDirectory, "PTS\" & Me.ADMINISTRATOR, _
Me.ADS_RIGHT_GENERIC_ALL)
Return True
Catch ex As Exception
Return False
End Try
End Function |