Używam następującego kodu, który działa, aby zalogować użytkownika do aplikacji wbudowanej w VB.NET przeciwko aktywnemu katalogowi.
Ten kod działa świetnie, ale muszę odzyskać imię, nazwisko, nazwę wyświetlaną użytkownika, a także sprawdzić, czy użytkownik jest częścią grupy.
Próbowałem już wielu form adResult.Property ("displayname"). ToString () i tym podobne, ale po prostu nie można go uruchomić poprawnie.
Ktoś ma pomysły, jak zrobić to, co chcę zrobić?
Oto kod, którego używam teraz i z góry dziękuję.
Public Function ValidateActiveDirectoryLogin(ByVal sDomain As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean
Dim bSuccess As Boolean = False
Dim adEntry As New System.DirectoryServices.DirectoryEntry("LDAP://" & sDomain, sUserName, sPassword)
Dim adSearcher As New System.DirectoryServices.DirectorySearcher(adEntry)
adSearcher.SearchScope = DirectoryServices.SearchScope.OneLevel
Try
Dim adResults As System.DirectoryServices.SearchResult = adSearcher.FindOne
bSuccess = Not (adResults Is Nothing)
Catch ex As Exception
bSuccess = False
MsgBox("Error")
End Try
Return bSuccess
End Function
Odpowiedzi:
4 dla odpowiedzi № 1Spójrz na obszar nazw System.DirectoryServices.AccountManagemment. The userprincipal obiekt ma wszystko, czego potrzebujesz i więcej. Oto wyjaśnienie o tym, jak korzystać z tego interfejsu API.
EDYCJA: w rzeczywistości jest o wiele prostsze w użyciu. Spójrz na ten przykładowy kod:
Dim userName = Environment.UserName
" create a domain context
Dim DC = New PrincipalContext(ContextType.Domain)
" find a user in the domain
Dim user = UserPrincipal.FindByIdentity(DC, userName)
" get the user"s groups
Dim groups = user.GetGroups()
" get the user"s first and last name
Dim firstName = user.GivenName
Dim lastName = user.SurName
" get the distinguishednames for all groups of the user
Dim groupNames = From g in groups Select g.DistinguishedName
" etc...
0 dla odpowiedzi nr 2
..i szybko zrzuć zawartość nazw grup (z odpowiedzi br. Jeroenhena) do listy:
ListBox1.DataSource = groupnames.ToList()