Hi everybody,

I've been searching for days to find a way to access Active directory database from my VB.NET appz and nothing made good results so far.. The Active directory DB is located onto a Win2k3 server but we have another on a NT4 server too.. Neither worked.. :( First, I was having a "Server not operational" error message, but fixed it in putting more parameters into the DirectoryEntry creation string. But now, I always get a "A referral was returned from the server(0x8007202B)" error message.. I tried to change as many things I could, but it still bugs me.. Any Idea?!??

Here's the source:
Dim oRoot As DirectoryEntry = New DirectoryEntry("LDAP://" & Me.mServer & ":389/DC=Dynanet,DC=com", "test", "test", AuthenticationTypes.Secure)

Dim oSearcher As DirectorySearcher = New DirectorySearcher(oRoot)
Dim oResult As SearchResult


'it bugz at this line, right on the For declaration
For Each oResult In oSearcher.FindAll

If Not CStr(oResult.GetDirectoryEntry().Properties("cn").Value) = "" Then
Dim User As New LDAPUser(CStr(oResult.GetDirectoryEntry().Properties("uid").Value), _
CStr(oResult.GetDirectoryEntry().Properties("givenName").Value), _
CStr(oResult.GetDirectoryEntry().Properties("desc").Value), _
CStr(oResult.GetDirectoryEntry().Properties("email").Value), _
CStr(oResult.GetDirectoryEntry().Properties("phone").Value), _
Me.HashItems.Add(User.userId, User)

End If

Next oResult
Catch ex As Exception
oRoot = Nothing
oSearcher = Nothing
oResult = Nothing
End Try

Thanks all!

11 Years
Discussion Span
Last Post by nicentral

I've found that the easiest way to query the AD Directory is by using the Active Directory Provider for ADO. Here's the code for a console app that will give you the distinguished names for all the computers in the built-in Computers container. Just give the app your FQDN and it should give you results. Also keep in mind that I did not include ANY error checking or handling in this.

Hope it helps!


Imports ADODB
Imports System

Module ListADComputers

Sub Main()

' define local variables
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
Dim oComm As New ADODB.Command
Dim strComputerName As String
Dim strDomainName As String

' get console parameters
System.Console.WriteLine("What is the name of the AD Domain you wish to query?")
strDomainName = System.Console.ReadLine()

' set connection properties
With oConn
.Provider = "ADsDSOObject"
.Open("Active Directory Provider")
End With

' set command properties
With oComm
.ActiveConnection = oConn
.CommandText = "<LDAP://CN=Computers,DC=" & Left(strDomainName, Len(strDomainName) - 4) & ",DC=" & _
Right(strDomainName, 3) & ">;(objectClass=computer);distinguishedName"
End With

' open recordset
oRS = oComm.Execute

If Not oRS.EOF Then
Do Until oRS.EOF
End If

' clean up objects
oRS = Nothing
oComm = Nothing
oConn = Nothing

End Sub

End Module

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.