Jessica Song Ответов: 1

Добавьте доменную группу в локальную группу администраторов с помощью VB.NET


Привет я пытаюсь написать программу которая добавляет группу в мою локальную группу администраторов используя vb.net. Я нашел много статей, говорящих о том, как добавить пользователя, но только несколько из них говорят о том, как добавить группу. Каждый раз, когда я пытаюсь запустить его, появляется ошибка.
Dim myGrp As DirectoryEntry = rootEntry.Children.Find(GrpName, "group")
И я не знаю почему.

Что я уже пробовал:

Dim localComp As string = System.Environment.MachineName()
Try
    Dim localMachine As New DirectoryEntry("WinNT://" & localComp & ",computer")
    Dim AdminGrp As DirectoryEntry = localMachine.Children.Find("Administrators", "group")

    Dim rootEntry As New DirectoryEntry("LDAP://DOMAINNAME")
    Dim myGrp As DirectoryEntry = rootEntry.Children.Find(GrpName, "group") 'ERROR

    AdminGrp.Invoke("Add", New Object() {myGrp.Path.ToString()})
    AdminGrp.CommitChanges()
    localMachine.Close()


Catch ex As Exception
    MessageBox.Show(ex.ToString)
End Try

Richard Deeming

Вероятно, вам будет легче использовать его. System.DirectoryServices.AccountManagement вместо этого занятия:
Система.Каталог.Пространство Имен AccountManagement | Microsoft Docs[^]
Все в Active Directory через C#.NET 3.5 (использование системы.Каталог.AccountManagement) - CodeProject[^]

Но если вы хотите, чтобы кто-то помог вам исправить ошибку, то вам нужно будет сказать нам, в чем заключается ошибка. Нажмите на зеленую ссылку "улучшить вопрос" и добавьте полную информацию об исключении к вашему вопросу.

1 Ответов

Рейтинг:
1

W.G.C.

Если возможно, используйте систему.Каталог.Вместо этого-бухгалтерия.

Dim LocalMachineContext As DirectoryServices.AccountManagement.PrincipalContext
Dim LocalGroupPrincipal As DirectoryServices.AccountManagement.GroupPrincipal
Dim DomainContext As DirectoryServices.AccountManagement.PrincipalContext
Dim DomainGroupPrincipal As DirectoryServices.AccountManagement.GroupPrincipal

' Get local machine context
LocalMachineContext = New DirectoryServices.AccountManagement.PrincipalContext(DirectoryServices.AccountManagement.ContextType.Machine)
' Get principal for local group
LocalGroupPrincipal = DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(LocalMachineContext, "Administrators")

' Get domain context
DomainContext = New DirectoryServices.AccountManagement.PrincipalContext(DirectoryServices.AccountManagement.ContextType.Domain, "Domain", "DC=Domain,DC=Com", "UserName", "Password")
' Get principal for domain group
DomainGroupPrincipal = DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(DomainContext, "DnsAdmins")

' Add domain group principal to local group members collection
LocalGroupPrincipal.Members.Add(DomainGroupPrincipal)
' Commit changes to local group
LocalGroupPrincipal.Save()