디렉터리 서비스와 Visual Basic .NET을 사용하여 사용자를 로컬 시스템에 추가하는 방법

교교 2014.06.22 10:15:41

1. Microsoft Visual Studio .NET을 열고 새로운 Visual Basic 콘솔 응용 프로그램 프로젝트를 만듭니다.
2. 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 누른 다음 참조 추가를 누릅니다.
3. 참조를 System.DirectoryServices.dll 어셈블리에 추가합니다.
4. Module1.vb의 코드를 아래 코드로 대체합니다.

 

Imports System.DirectoryServices
Module Module1

    Sub Main()
        Try
            Dim AD As DirectoryEntry = _
              New DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")
            Dim NewUser As DirectoryEntry = AD.Children.Add("TestUser1", "user")
            NewUser.Invoke("SetPassword", New Object() {"#12345Abc"})
            NewUser.Invoke("Put", New Object() {"Description", "Test User from .NET"})
            NewUser.CommitChanges()
            Dim grp As DirectoryEntry

            grp = AD.Children.Find("Guests", "group")
            If grp.Name <> "" Then
                grp.Invoke("Add", New Object() {NewUser.Path.ToString()})
            End If
            Console.WriteLine("Account Created Successfully")
            Console.ReadLine()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Console.ReadLine()
        End Try
    End Sub

End Module

 

 

 

코드 설명

새 디렉터리 항목 만들기

이 예제에서는 시스템이 Microsoft Windows NT, Windows 2000 또는 Windows XP에서 실행되고 있다는 가정 하에 디렉터리 항목을 만듭니다. DirectoryEntry 생성자에 전달되는 문자열은 "WinNT://"로 시작합니다. 또한 타사 운영 체제에서도 디렉터리 서비스를 실행할 수 있습니다.

Dim AD As DirectoryEntry = _ 
  New DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")

디렉터리 트리에 디렉터리 항목 추가

다음 코드는 값이 TestUser1인 형식 user DirectoryEntry Active Directory 트리에 추가합니다.

Dim NewUser As DirectoryEntry = AD.Children.Add("TestUser1", "user")

새 사용자 계정의 암호와 설명 설정

다음 코드는 Invoke 메서드를 호출하여 DirectoryEntry 개체의 SetPassword Put 메서드를 실행합니다. 이렇게 하면 암호가 설정되고 사용자 계정에 대한 설명이 지정됩니다. 또한 이 코드는 CommitChanges 메서드를 호출하여 변경 사항을 저장합니다.

NewUser.Invoke("SetPassword", New Object() {"#12345Abc"})
NewUser.Invoke("Put", New Object() {"Description", "Test User from .NET"})
NewUser.CommitChanges()

그룹에 계정 추가

계정을 그룹에 추가하는 첫번째 단계는 DirectoryEntry 형식의 변수를 정의하는 것입니다. 그런 다음 ActiveDirectory 클래스에 있는 Children 멤버의 Find 메서드를 호출하여 변수를 채웁니다. 이 경우에 Guests 그룹은 검색 대상입니다. 이 코드는 그룹이 발견되었는지 확인하기 위해 Find 메서드가 반환하는 값을 테스트합니다. 그룹이 발견된 경우 새로운 사용자 계정이 그룹에 추가됩니다.

Dim grp As DirectoryEntry
grp = AD.Children.Find("Guests", "group")
If grp.Name <> "" Then
    grp.Invoke("Add", New Object() {NewUser.Path.ToString()})
End If