VB.Net - Программные программные блокировки при удалении пользователя из всех групп AD
Я пишу приложение в VB.Net, которое принимает учетную запись AD, введенную пользователем, и отменяет права доступа и автоматически отключает ее. Как часть этого, это удаляет все группы AD, которые это может от пользователя.
Обратите внимание, что некоторые пользователи могут быть членами групп, для которых у человека, запускающего программу, нет прав на изменение, и это нормально для моих требований. Эти группы не имеют стандартного соглашения об именах или формата.
Следующий код удаляет пользователя из всех групп, членом которых он является успешно, пропуская любые группы, у которых у человека, работающего с программой, нет прав на изменение, но ловушка заключается в том, что программа, после чего пытается удалить группу, не может выполнить мягкую блокировку. (например, пользователи домена)! Что я могу сделать, чтобы предотвратить это?
Dim ctx As DirectoryServices.AccountManagement.PrincipalContext = New DirectoryServices.AccountManagement.PrincipalContext(DirectoryServices.AccountManagement.ContextType.Domain, "net.mydomain.co.uk")
Dim user As DirectoryServices.AccountManagement.UserPrincipal = DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(ctx, tbxUsertoDeprovision.Text)
For Each group As DirectoryServices.AccountManagement.GroupPrincipal In user.GetGroups(ctx)
Try
group.Members.Remove(user)
group.Save()
group.Dispose()
Catch ex As Exception
Continue For
End Try
Next
Если я вставлю окно сообщения в Catch следующим образом:
Catch ex As Exception
MessageBox.Show(ex.ToString())
Continue For
Затем запустите код, он отображает следующее окно сообщения, но только один раз:
System.InvalidOperation.Exception: член не может быть удален из свойства Members объекта Group, поскольку он имеет эту группу в качестве своей основной группы. (Это на group.Members.Remove(user)
линия).
Затем программа не идет дальше и не код после Next
когда-либо выполняется. Я вынужден закрыть приложение.