Problems interacting with LDAP, AD in particular


Apr 9, 2007
Programming Experience
I have been tasked with creating a Query and Creation tool that will interact with all three of the directories we have in place. I have been able to create the query portion and I am almost done with the creation portion but I have run into a brick wall.

Early in the development I decided I was going to use a secure connection to the directories but, as I programmed the code I found out the only way I could connect successfully was by using "AuthenticationTypes.ServerBind". When I attempted to use "AuthenticationTypes.Secure" I received a DirectoryServicesCOMException. So I just went with ServerBind.

Now to the problem I am currently having. I can create a user and set attributes but when I attempt to set the password I receive a "invalid target of the invocation message". If anyone knows anything about this I would be in their debt. Even if you can point me to someone elses source code for me to study.


Here is the code

Private Sub CreateADAccount(ByVal strUserName As String, ByVal strPassword As String, ByVal strFirstName As String, ByVal strMiddleName As String, ByVal strLastName As String, ByVal strSSN As String, ByVal strTitle As String)
        Dim dirRoot As DirectoryEntry = New DirectoryEntry("LDAP://" & ADServer, My.Settings.strADUserName, My.Settings.strADPassword, AuthenticationTypes.Secure)

Dim NewUser As DirectoryEntry = dirRoot.Children.Add("CN=" & strUserName, "User") 'This is where it will error out if AuthenticationTypes.Secure is used


        NewUser.Properties("userPrincipalName").Value = strUserName & ""
        NewUser.Properties("sAMAccountName").Value = strUserName
        NewUser.Properties("givenName").Value = strFirstName
        NewUser.Properties("sn").Value = strLastName
        NewUser.Properties("initials").Value = strMiddleName
        NewUser.Properties("title").Value = strTitle
        NewUser.Properties("employeeNumber").Value = strSSN


            NewUser.Invoke("SetPassword", New Object() {strPassword})

        Catch ex As Exception
        End Try
End Sub
Top Bottom