디렉터리 서비스 및 Visual C sharp를 사용하여 로컬 시스템에 사용자 추가

이 문서에서는 네임스페이 DirectoryServices 스를 사용하여 로컬 시스템에 사용자를 추가하고 Visual C#의 그룹을 추가하는 방법을 설명합니다.

원래 제품 버전: Visual C#
원본 KB 번호: 306273

요약

이 단계별 문서에서는 네임스페이 DirectoryServices 스를 사용하여 로컬 시스템 및 그룹에 사용자를 추가하는 방법을 보여줍니다.

샘플 만들기

  1. Visual Studio .NET 2003, Visual Studio 2005 또는 Visual Studio 2008을 시작한 다음 새 Visual C# 콘솔 애플리케이션 프로젝트를 만듭니다.

  2. 솔루션 탐색기 참조를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.

  3. 어셈블리에 대한 참조를 추가합니다 System.DirectoryServices.dll .

  4. Class1.cs 파일의 코드를 다음 코드로 바꿉 있습니다.

    참고

    Visual C# 2005 또는 Visual C# 2008에서는 Class1.cs 파일이 Program.cs 파일로 대체됩니다.

    using System;
    using System.DirectoryServices;
    
    class Class1
    {
        static void Main(string[] args)
        {
            try
            {
                DirectoryEntry AD = new DirectoryEntry("WinNT://" +
                Environment.MachineName + ",computer");
                DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
                NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
                NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
                NewUser.CommitChanges();
                DirectoryEntry grp;
    
                grp = AD.Children.Find("Guests", "group");
                if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
                Console.WriteLine("Account Created Successfully");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
    }
    
  5. 프로젝트를 컴파일한 다음 실행합니다.

  6. Windows 2000 기반 컴퓨터에서 다음 단계에 따라 계정이 만들어지고 게스트 그룹에 추가되었는지 확인합니다.

    1. 시작 메뉴에서 프로그램을 가리키고 관리 도구를 가리킨 다음 컴퓨터 관리를 클릭합니다.
    2. 로컬 사용자 및 그룹 노드를 확장하려면 클릭합니다. 새 계정은 사용자 노드와 게스트 그룹의 노드 아래에 표시됩니다.

    Windows XP 기반 컴퓨터에서 다음 단계에 따라 계정이 만들어지고 게스트 그룹에 추가되었는지 확인합니다.

    1. 시작 메뉴에서 제어판 클릭합니다.
    2. 사용자 계정을 두 번 클릭합니다. 새 사용자 계정이 사용자 계정 대화 상자에 표시됩니다.

    중요

    테스트를 완료한 후 시스템에서 새로 만든 사용자 계정을 제거합니다.

새 디렉터리 항목 만들기

이 샘플에서 디렉터리 항목을 만들 때 시스템에서 Windows NT, Windows 2000 또는 Windows XP를 실행하고 있다고 가정합니다.

참고

생성자에 전달되는 DirectoryEntry 문자열은 로 시작합니다 "WinNT://". 다른 타사 운영 체제에서 Directory Services를 실행할 수도 있습니다.

DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

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

다음 코드는 값 TestUser1 이 인 DirectoryEntry 형식의 사용자를 Active Directory 트리에 추가합니다.

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

새 사용자 계정에 대한 암호 및 설명 설정

다음 코드는 Invoke 메서드를 호출하여 개체의 SetPasswordPut 메서드를 호출합니다 DirectoryEntry . 그러면 암호가 설정되고 사용자 계정에 설명이 할당됩니다. 또한 이 코드는 메서드를 CommitChanges 호출하여 변경 내용을 저장합니다.

NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

그룹에 계정 추가

그룹에 계정을 추가하려면 다음 단계를 수행합니다.

  1. 형식의 변수를 정의합니다 DirectoryEntry.
  2. Find 클래스 멤버의 메서드를 ChildrenActiveDirectory 호출하여 변수를 채웁다. 이 경우 게스트 그룹은 검색의 대상입니다. 이 코드는 메서드가 반환하는 Find 값을 테스트하여 그룹이 발견되었는지 확인합니다. 그룹을 찾은 경우 새 사용자 계정이 그룹에 추가됩니다.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

문제 해결

사용자 계정을 만들 수 있는 충분한 권한 없이 코드를 실행하려고 하면 이 문서의 코드가 실패합니다. 코드가 성공적으로 완료되려면 현재 로그온한 사용자가 Administrators 그룹의 구성원이거나 사용자가 사용자 계정을 만들 수 있는 특정 권한이 있어야 합니다.