다음을 통해 공유


사용자 열거

Windows NT 4.0 do기본와 달리 Windows 2000 사용자는 할 일의 루트뿐만 아니라 할 일기본 모든 컨테이너 또는 OU(조직 구성 단위)에 배치할 수 있습니다기본. 즉, 사용자는 디렉터리 계층 구조의 여러 위치에 있을 수 있습니다. 따라서 사용자를 열거하기 위한 두 가지 선택 사항이 있습니다.

  • 컨테이너, OU 또는 do기본 루트에 직접 포함된 사용자를 열거합니다.

    열거하려는 사용자가 포함된 컨테이너 개체에 명시적으로 바인딩하고, "user"를 포함하는 필터를 IADsContainer.Filter 속성을 사용하여 클래스로 설정하고, IADsContainer::get__NewEnum 메서드를 사용하여 사용자 개체를 열거합니다.

    이 기술은 컨테이너 또는 OU 개체에 직접 포함된 사용자를 열거하는 데 사용할 수 있습니다. 컨테이너에 잠재적으로 다른 사용자를 포함할 수 있는 다른 컨테이너가 포함된 경우 해당 컨테이너에 바인딩하고 해당 컨테이너에서 사용자를 재귀적으로 열거해야 합니다. 사용자 개체를 조작할 필요가 없으며 특정 속성만 읽어야 하는 경우 옵션 2에 설명된 심층 검색을 사용합니다.

    열거형은 각 사용자 개체를 나타내는 ADSI COM 개체에 대한 포인터를 반환하므로 QueryInterface를 호출하여 사용자 개체에 대한 IAD, IADsUser IADsPropertyList 인터페이스 포인터를 가져올 수 있습니다. 즉, 각 사용자 개체에 명시적으로 바인딩하지 않고도 컨테이너의 열거된 각 사용자 개체에 대한 인터페이스 포인터를 가져올 수 있습니다. 컨테이너 내에서 직접 모든 사용자에 대한 작업을 수행하기 위해 열거형은 IAD 또는 IADsUser 메서드를 호출하기 위해 각 사용자에 바인딩할 필요가 없습니다. 사용자로부터 특정 속성을 검색하려면 옵션 2에 설명된 대로 IDirectorySearch를 사용합니다.

  • 트리에서 모든 사용자를 찾으려면 (&(objectClass=user)(objectCategory=person))에 대한 전체 검색을 수행합니다.

    먼저 검색을 시작할 컨테이너 개체에 바인딩합니다. 예를 들어 do기본의 모든 사용자를 찾으려면 do기본; 루트에 바인딩하여 포리스트의 모든 사용자를 찾고, 글로벌 카탈로그에 바인딩하고, GC의 루트에서 검색합니다.

    그런 다음 IDirectorySearch를 사용하여 포함된 검색 필터(&(objectClass=user)(objectCategory=person)) 및 ADS_SCOPE_SUBTREE 검색 기본 설정을 사용하여 쿼리합니다.

    ADS_SCOPE_ONELEVEL 검색 기본 설정으로 검색을 수행하여 바인딩된 컨테이너 개체의 직접 콘텐츠로 검색을 제한할 수 있습니다.

    IDirectorySearch 는 사용자로부터 특정 속성의 값만 검색합니다. 값을 검색하려면 IDirectorySearch를 사용합니다. 검색에서 반환된 사용자 개체를 조작하려면, 즉 IAD 또는 IADsUser 메서드를 사용하려면 명시적으로 바인딩해야 합니다. 이렇게 하려면 검색에서 반환할 속성 중 하나로 distinguishedName을 지정하고 반환된 고유 이름을 사용하여 검색에서 반환된 각 사용자에 바인딩합니다.

    특정 속성만 검색됩니다. 사용자 클래스의 가능한 모든 특성을 명시적으로 지정하지 않고는 모든 특성을 검색할 수 없습니다.