#Region "Imports
Imports ADSSECURITYLi
Imports System.Diagnost ic
Imports Scriptin
Imports ActiveD
Imports System.Director yService
Imports System.Configur ation.Configura tionSetting
Imports System.I
#End Regio
Public Class Utilit
Inherits System.Web.UI.P ag
#Region "Constants
Const ADS_UF_SCRIPT = &H
Const ADS_UF_ACCOUNTD ISABLE = &H
Const ADS_UF_HOMEDIR_ REQUIRED = &H
Const ADS_UF_LOCKOUT = &H1
Const ADS_UF_PASSWD_N OTREQD = &H2
Const ADS_UF_PASSWD_C ANT_CHANGE = &H4
Const ADS_UF_ENCRYPTE D_TEXT_PASSWORD _ALLOWED = &H8
Const ADS_UF_TEMP_DUP LICATE_ACCOUNT = &H10
Const ADS_UF_NORMAL_A CCOUNT = &H20
Const ADS_UF_INTERDOM AIN_TRUST_ACCOU NT = &H80
Const ADS_UF_WORKSTAT ION_TRUST_ACCOU NT = &H100
Const ADS_UF_SERVER_T RUST_ACCOUNT = &H200
Const ADS_UF_DONT_EXP IRE_PASSWD = &H1000
Const ADS_UF_MNS_LOGO N_ACCOUNT = &H2000
Const ADS_UF_SMARTCAR D_REQUIRED = &H4000
Const ADS_UF_TRUSTED_ FOR_DELEGATION = &H8000
Const ADS_UF_NOT_DELE GATED = &H10000
Const ADS_UF_USE_DES_ KEY_ONLY = &H20000
Const ADS_UF_DONT_REQ UIRE_PREAUTH = &H40000
Const ADS_UF_PASSWORD _EXPIRED = &H80000
Const ADS_UF_TRUSTED_ TO_AUTHENTICATE _FOR_DELEGATION = &H100000
#End Regio
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArg s) Handles MyBase.Loa
Dim AccountName as strin
Dim Password as Strin
AccountName = "SEA1010
Password = "123456789
AddAccount(Acco untName, Password
End Su
Private Sub SetPassword(ByV al AccountName As String, ByVal Password As String
Dim MyDirectoryEntr y As DirectoryEntr
Dim MyDirectorySear cher As DirectorySearch e
Dim MyGroup As DirectoryEntr
Dim MyUser As DirectoryEntr
Dim MyUserAccountCo ntrol As Intege
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword")
MyDirectorySear cher = New DirectorySearch er(MyDirectoryE ntry
MyDirectorySear cher.Filter = "(samAccountNam e=" & AccountName & ")
MyUser = New DirectoryEntry( MyDirectorySear cher.FindOne.Ge tDirectoryEntry .Path
MyUser.Authenti cationType = AuthenticationT ypes.Secur
MyUser.Invoke(" SetPassword", New Object() {Password}
MyUserAccountCo ntrol = MyUser.Properti es("userAccount Control").Valu
MyUser.Properti es("userAccount Control").Value = MyUserAccountCo ntrol Or ADS_UF_DONT_EXP IRE_PASSW
MyUser.Properti es("userAccount Control").Value = MyUserAccountCo ntrol Or ADS_UF_PASSWD_C ANT_CHANG
MyDirectoryEntr y.CommitChanges (
MyDirectoryEntr y.RefreshCache(
End Su
Private Sub CreateAccount(B yVal AccountName As String
Dim MyDirectoryEntr y As DirectoryEntr
Dim MyDirectorySear cher As DirectorySearch e
Dim MyGroup As DirectoryEntr
Dim MyUser As DirectoryEntr
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword")
MyUser = MyDirectoryEntr y.Children.Add( "cn=" & AccountName & ",ou=" & AppSettings("LD APOU"), "user"
MyUser.Properti es("sn").Add(Ac countName
MyUser.Properti es("displayName ").Add(AccountN ame
MyUser.Properti es("samAccountN ame").Add(Accou ntName
MyUser.Properti es("homeDirecto ry").Add(AppSet tings("FTPDirec toryPath") & AccountName
MyUser.Properti es("accountExpi res").Add(0
MyUser.CommitCh anges(
MyUser.RefreshC ache(
End Su
Private Sub SetGroup(ByVal AccountName As String
Dim MyDirectoryEntr y As DirectoryEntr
Dim MyDirectorySear cher As DirectorySearch e
Dim MyGroup As DirectoryEntr
Dim MyUser As DirectoryEntr
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword")
MyDirectorySear cher = New DirectorySearch er(MyDirectoryE ntry
MyDirectorySear cher.Filter = "(samAccountNam e=" & AccountName & ")"
MyUser = New DirectoryEntry( MyDirectorySear cher.FindOne.Ge tDirectoryEntry .Path)
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath") & "/CN=" & AppSettings("LD APCN") & ",OU=" & AppSettings("LD APOU") & " , " & AppSettings("LD APDCPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword"))
MyDirectoryEntr y.Invoke("Add", New Object() {MyUser.Path.To String()})
MyDirectoryEntr y.CommitChanges ()
MyUser.RefreshC ache()
End Sub
Private Sub EnableAccount(B yVal AccountName As String)
Dim MyDirectoryEntr y As DirectoryEntry
Dim MyDirectorySear cher As DirectorySearch er
Dim MyGroup As DirectoryEntry
Dim MyUser As DirectoryEntry
Dim MyUserAccountCo ntrol As Integer
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword"))
MyDirectorySear cher = New DirectorySearch er(MyDirectoryE ntry)
MyDirectorySear cher.Filter = "(samAccountNam e=" & AccountName & ")"
MyUser = New DirectoryEntry( MyDirectorySear cher.FindOne.Ge tDirectoryEntry .Path)
MyUserAccountCo ntrol = MyUser.Properti es("userAccount Control").Value
MyUser.Properti es("userAccount Control").Value = MyUserAccountCo ntrol And Not ADS_UF_ACCOUNTD ISABLE
MyDirectoryEntr y.CommitChanges ()
MyDirectoryEntr y.RefreshCache( )
End Sub
Private Sub DisableAccount( ByVal AccountName As String)
Dim MyDirectoryEntr y As DirectoryEntry
Dim MyDirectorySear cher As DirectorySearch er
Dim MyGroup As DirectoryEntry
Dim MyUser As DirectoryEntry
Dim MyUserAccountCo ntrol As Integer
MyDirectoryEntr y = New DirectoryEntry( "LDAP://" & AppSettings("LD APPath"), AppSettings("Do main") & "\" & AppSettings("Ad ministrator"), AppSettings("Pa ssword"))
MyDirectorySear cher = New DirectorySearch er(MyDirectoryE ntry)
MyDirectorySear cher.Filter = "(samAccountNam e=" & AccountName & ")"
MyUser = New DirectoryEntry( MyDirectorySear cher.FindOne.Ge tDirectoryEntry .Path)
MyUserAccountCo ntrol = MyUser.Properti es("userAccount Control").Value
MyUser.Properti es("userAccount Control").Add(M yUserAccountCon trol Or ADS_UF_ACCOUNTD ISABLE)
MyDirectoryEntr y.CommitChanges ()
MyDirectoryEntr y.RefreshCache( )
End Sub
Private Sub AddAccount(ByVa l AccountName, ByVal Password)
CreateAccount(A ccountName)
SetPassword(Acc ountName, Password)
EnableAccount(A ccountName)
SetGroup(Accoun tName)
End Sub
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnos tics.DebuggerSt epThrough()> Private Sub InitializeCompo nent()
End Sub
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceho lderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArg s) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeCompo nent()
End Sub
#End Region
End Class