以下代码在vb 2005中完美运行,但无法在.net 1.1中运行。
Private Function GetActiveDirUserDetails(ByVal username As String) As String
Dim dirEntry As System.DirectoryServices.DirectoryEntry
Dim dirSearcher As System.DirectoryServices.DirectorySearcher
Try
dirEntry = New System.DirectoryServices.DirectoryEntry("LDAP://123.45.67.89:101/DC=mydomain,DC=com")
dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)
dirSearcher.Filter = "(samAccountName=" & username & ")"
Dim sr As DirectoryServices.SearchResult = dirSearcher.FindOne()
If sr Is Nothing Then
Return False
End If
Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()
'Dim firstname = de.Properties("GivenName").Value.ToString()
'Dim lastname = de.Properties("sn").Value.ToString()
'Dim fullname = de.Properties("DisplayName").Value.ToString()
Dim ObjFirstName As String = ""
Dim ObjLastName As String = String.Empty
Dim ObjEmail As String = ""
Try
ObjEmail = de.Properties("mail").Value.ToString()
ObjFirstName = de.Properties("GivenName").Value.ToString()
ObjLastName = de.Properties("sn").Value.ToString()
Catch ex As Exception
ObjFirstName = de.Properties("DisplayName").Value.ToString()
End Try
MsgBox(ObjFirstName + ObjLastName + ObjEmail)
Return ObjFirstName
Return ObjLastName
Return ObjEmail
Catch ex As Exception ' return false if exception occurs
Return ex.Message
MsgBox(ex.Message)
End Try
End Function
当我按下按钮时,它什么也没显示。我想在这里获得AD属性。有人可以帮忙吗?
答案 0 :(得分:0)
您似乎没有加载任何属性,即
dirSearcher.PropertiesToLoad.Add("mail")
dirSearcher.PropertiesToLoad.Add("GivenName")
dirSearcher.PropertiesToLoad.Add("sn")
答案 1 :(得分:0)
如果VB中的目标框架与1.1不同(默认情况下是2.0),那么将项目属性中的更改为1.1,摆脱try..catch并再次运行代码以确保它“在VB中”工作。如果它可以工作 - 那么问题很可能不是.net版本,而是你在“VB之外”运行应用程序的方式。例如,默认情况下,在本地开发框中调试代码时,您运行的帐户下的代码可能与用于运行已编译应用程序的帐户不同。在这种情况下,使用AD的代码可能会失败,因为它使用其他用户帐户(例如计算机帐户而不是用户帐户,或者AD中的权限较少)。