Да, проверка подлинности с помощью форм, похоже, конфликтует с удостоверениями Windows, но я написал некоторый код, который, я считаю, будет выполнять то, что вы просите.
Прежде всего, добавьте ссылку на System.DirectoryServices
в ваш проект.
Сначала необходимо инициализировать объект PrincipalContext
.
imports System.DirectoryServices
Dim userImLookingFor as AccountManagement.UserPrincipal(ctx)
Dim tempUser As New AccountManagement.UserPrincipal(ctx)
tempUser.SamAccountName = p_samAccountName
Dim searcher As New AccountManagement.PrincipalSearcher(tempUser)
If searcher.FindAll().Count = 1 Then
userImLookingFor = searcher.FindAll()(0)
Когда этот код выполняется, userImLookingFor
содержит пользователя, указанного в p_samAccountName.Далее вы хотите получить список групп.
Dim tempGp As New AccountManagement.GroupPrincipal(userImLookingFor.Context)
Dim searcher As New AccountManagement.PrincipalSearcher(tempGp)
Dim searchResult As AccountManagement.PrincipalSearchResult(Of AccountManagement.Principal)
searchResult = searcher.FindAll()
Наконец, вы можете обратиться к коллекции searchResult.Чтобы получить имена групп, перечислите их по индексам и получите либо «Имя участника-пользователя», либо «Имя учетной записи SAM».
Да, проверка подлинности с помощью форм не очень хорошо работает с Active Directory, но позвольте мнезнаю, поможет ли это.Я не знаком с подходом в предыдущем ответе;эти два разных ответа могут дать вам объекты, которые дают вам доступ к различным функциям.