/ / Извличане на потребителска информация и проверка дали член на група в активна директория използва VB.NET - .net, vb.net, active-directory

Извличане на потребителска информация и проверка дали член на група в активна директория използва VB.NET - .net, vb.net, активна директория

Аз използвам следния код, който работи, за да влезе потребител на приложение, изградено във VB.NET срещу активна директория.

Този код работи чудесно, но аз трябва да възстановя името на потребителя, фамилното име, показваното име и също така да проверя дали потребителят е част от група.

Опитах много форми на adResults.Property ("displayname"). ToString () и други подобни, но просто не мога да го накарам да работи правилно.

Някой има ли идеи как да правя това, което искам?

Ето кода, който използвам сега и благодаря предварително.

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

Отговори:

4 за отговор № 1

Вижте пространството с имена System.DirectoryServices.AccountManagemment. Най- userprincipal обектът разполага с всичко необходимо и повече. Ето обяснение за това как да използвате този API.

РЕДАКТИРАНЕ: това е много по-лесно да се използва в действителност.

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 за отговор № 2

..и бързо да изхвърлите съдържанието на имената на групи (от ясния отговор на Йеронех) в списъчно поле:

    ListBox1.DataSource = groupnames.ToList()