디렉터리 개체 선택기
디렉터리 개체 선택 대화 상자를 사용하면 사용자가 전역 카탈로그, 도메인 또는 컴퓨터 또는 작업 그룹에서 하나 이상의 개체를 선택할 수 있습니다. 사용자가 선택할 수 있는 개체 유형에는 사용자, 연락처, 그룹 및 컴퓨터 개체가 포함됩니다. Active Directory Domain Services 대한 자세한 내용은 Active Directory Domain Services.
개체 선택 대화 상자를 표시하려면 다음을 수행합니다.
- CoCreateInstance 또는 CoCreateInstanceEx 함수를 호출하여 IDsObjectPicker 인터페이스의 instance 만듭니다.
- IDsObjectPicker::Initialize 메서드를 호출하여 대화 상자를 초기화합니다.
- IDsObjectPicker::InvokeDialog 메서드를 호출하여 대화 상자를 표시합니다.
- 개체 선택기 대화 상자에서 반환된 IDataObject instance IDataObject::GetData 메서드를 호출하여 CFSTR_DSOP_DS_SELECTION_LIST 데이터를 검색합니다. CFSTR_DSOP_DS_SELECTION_LIST 클립보드 형식은 DS_SELECTION_LIST 구조를 포함하는 HGLOBAL을 제공합니다. DS_SELECTION_LIST 구조체에는 개체 선택 대화 상자에서 선택한 항목에 대한 데이터가 포함됩니다.
개체에 SID(보안 식별자)가 필요한 경우 선택한 개체에 대해 검색할 특성 목록에 objectSID 특성을 추가하여 개체 선택기에서 직접 요청해야 합니다. 반환된 개체 이름을 LsaLookupNames 또는 LookupAccountName 함수에 전달하는 것은 권장되지 않습니다. 이름 조회가 중복되고 경우에 따라 실패할 수 있기 때문입니다.
선택한 개체에 대한 참조를 저장하면 개체가 이동하거나 이름을 바꾸거나 로캘 차이로 인해 변경될 수 있으므로 고유 이름을 저장하지 않아야 합니다. 보안 주체의 경우 개체에 대해 objectSID 를 요청하고 안전하게 저장해야 합니다. 나중에 보안 주체의 이름이 필요한 경우 LookupAccountSid 함수를 사용하여 검색할 수 있습니다. 다른 모든 개체의 경우 objectGUID 를 요청하고 저장해야 합니다.
초기화
개체 선택 대화 상자가 초기화되면 scope 형식 및 필터 집합이 지정됩니다. 지정된 scope 유형은 예를 들어 사용자가 개체를 선택할 수 있는 위치, 도메인 또는 컴퓨터를 결정합니다. 필터는 사용자가 지정된 scope 형식에서 선택할 수 있는 개체의 형식을 결정합니다. 자세한 내용은 아래의 범위 및 필터 섹션을 참조하세요.
기본적으로 사용자는 디렉터리 개체 선택 대화 상자에서 단일 개체를 선택할 수 있습니다. 여러 선택을 사용하도록 설정하려면 대화 상자가 초기화될 때 DSOP_INIT_INFO 구조체의 flOptions 멤버에서 DSOP_FLAG_MULTISELECT 플래그를 설정합니다.
범위 및 필터
보기 드롭다운 목록에는 사용자가 개체를 선택할 수 있는 범위가 포함됩니다. scope 사용 가능한 개체 집합에 대한 데이터를 저장하고 액세스를 제공하는 도메인, 컴퓨터, 작업 그룹 또는 글로벌 카탈로그입니다. scope 목록의 항목은 개체 선택 대화 상자를 초기화하기 위해 IDsObjectPicker::Initialize 메서드가 마지막으로 호출되었을 때 지정된 scope 형식 및 대상 컴퓨터에 따라 달라집니다.
scope 유형은 대상 컴퓨터가 속한 엔터프라이즈의 모든 도메인 또는 대상 컴퓨터의 엔터프라이즈 또는 대상 컴퓨터 자체에 대한 글로벌 카탈로그와 같은 범위의 일반 범주입니다. 지정된 각 scope 유형에 대해 대화 상자는 대상 컴퓨터의 컨텍스트를 사용하여 scope 목록 항목을 확인합니다.
IDsObjectPicker::Initialize 메서드는 DSOP_SCOPE_INIT_INFO 구조체의 배열을 포함하는 DSOP_INIT_INFO 구조체에 대한 포인터를 사용합니다. DSOP_SCOPE_INIT_INFO 배열의 각 항목은 하나 이상의 scope 형식과 적용 가능한 필터 및 기타 특성을 지정합니다. 필터는 사용자가 지정된 scope 유형에서 선택할 수 있는 사용자, 그룹, 연락처 및 컴퓨터와 같은 개체 유형을 결정합니다. 사용자가 목록에서 scope 선택하면 대화 상자에서 해당 scope 형식에 대한 필터를 적용하여 사용자가 선택할 수 있는 개체 목록을 표시합니다.
각 DSOP_SCOPE_INIT_INFO 구조체에는 해당 scope 형식에 대한 필터를 지정하는 DSOP_FILTER_FLAGS 구조체가 포함되어 있습니다. DSOP_FILTER_FLAGS 구조는 상위 수준 범위와 하위 수준 범위를 구분합니다.
- 상위 수준 scope ADSI LDAP 공급자를 지원하는 글로벌 카탈로그 또는 도메인입니다.
- 하위 수준 scope 작업 그룹 및 모든 개별 컴퓨터를 포함합니다. 대화 상자는 ADSI WinNT 공급자를 사용하여 하위 수준 scope 액세스합니다.
DSOP_FILTER_FLAGS 구조에 사용하도록 정의된 필터 플래그 집합에는 상위 수준 범위와 하위 수준 범위에 대해 하나씩 정의되어 있습니다. DSOP_FILTER_FLAGS 구조체의 Uplevel 멤버는 상위 수준 범위에 대한 필터를 지정하는 DSOP_UPLEVEL_FILTER_FLAGS 구조체입니다. DSOP_FILTER_FLAGS 구조체의 flDownlevel 멤버는 하위 수준 범위에 대한 필터를 지정하는 플래그 집합입니다.