2016-06-22 7 views
1

ich Code unten verwenden Vornamen, Nachnamen zu erhalten, E-Mail, und Abteilung von AD VB.Net 1,1Kann nicht Attribute von AD erhalten vb.net mit

Public Shared Function GetAttribute(ByVal username As String, ByVal pwd As String) As UserInfo 
     Dim objUserInfo As New UserInfo 
     Dim ObjFirstName As String = "" 
     Dim ObjLastName As String = String.Empty 
     Dim ObjEmail As String = "" 
     Dim objDepartment As String = "" 
     Dim Success As Boolean = False 

     Dim LDAPAddress As String = ConfigurationSettings.AppSettings.Get("LDAPAddress") 
     Dim Entry As New System.DirectoryServices.DirectoryEntry(LDAPAddress, username, pwd) 
     Dim Searcher As New System.DirectoryServices.DirectorySearcher(Entry) 
     Searcher.SearchScope = DirectoryServices.SearchScope.OneLevel 
     Dim Filter As String = "(samAccountName=" & username & ")" 
     Dim findUser As DirectorySearcher = New DirectorySearcher(Entry, Filter) 
     Dim results As SearchResultCollection = findUser.FindAll 


     Try 
      Dim Resultsx As System.DirectoryServices.SearchResult = Searcher.FindOne 
      Success = Not (Resultsx Is Nothing) 

      findUser.PropertiesToLoad.Add("name") 
      Dim name As String = DirectCast(Resultsx.Properties(name)(0), String) 

      Dim de As System.DirectoryServices.DirectoryEntry = Resultsx.GetDirectoryEntry() 
      Dim gg = de.Properties.PropertyNames() 

      For Each Onn As String In gg 
       Dim str As String = String.Format("{0}", Onn) 
      Next 

      Try 
       ObjFirstName = de.Properties("GivenName").Value.ToString() 


       ObjEmail = de.Properties("mail").Value.ToString() 

       ObjLastName = de.Properties("sn").Value.ToString() 
       objDepartment = de.Properties("department").Value.ToString() 

      Catch ex As Exception 
       ObjFirstName = de.Properties("DisplayName").Value.ToString() 
      End Try 

verwenden, aber ich kann nicht diese Attribute. in

Dim str As String = String.Format ("{0}", Onn)

gibt es nur 15 Attribute, und es gibt kein Vorname, Nachname, E-Mail, und Abteilung. Was mache ich falsch?

Antwort

0

Ihr Code, obwohl altmodisch, sieht auf den ersten Blick gut aus. Wenn Sie darauf bestehen, mit Ihrem Code fortzufahren, werde ich später nachsehen.

In der Zwischenzeit sollte dieser Code Ihrer Situation passt:

Dim user As DirectoryEntry = New DirectoryEntry("UserDN") 
    Dim src As DirectorySearcher = New DirectorySearcher(user, "(&(objectClass=user)(objectCategory=Person))") 

    src.PropertiesToLoad.Add("sn") 
    src.PropertiesToLoad.Add("givenName") 
    src.PropertiesToLoad.Add("mail") 
    src.PropertiesToLoad.Add("department") 

    Dim res As SearchResult = src.FindOne 

    Console.WriteLine(res.Properties("sn")(0)) 
    Console.WriteLine(res.Properties("givenName")(0)) 
    Console.WriteLine(res.Properties("mail")(0)) 
    Console.WriteLine(res.Properties("department")(0)) 

    Console.ReadLine() 
+0

Danke. Ich habe Ihren Code versucht, aber nicht funktioniert. Er sagte: "Index lag außerhalb des zulässigen Bereichs. Muss nicht negativ sein und weniger als die Größe der Sammlung." –

+0

@ C.PurS Das ist die Fehlermeldung, wenn eines der Attribute Ihres definierten Benutzers leer ist – GrindelOh

+0

Ja, ich habe etwas falsch gemacht. Es funktioniert jetzt gut, wenn ich vb 2005 benutzte. Aber funktioniert immer noch nicht in .net 1.1 –

Verwandte Themen