Средство выбора объектов каталога
Диалоговое окно выбора объектов каталога позволяет пользователю выбрать один или несколько объектов из глобального каталога, домена или компьютера или рабочей группы. Типы объектов, из которых пользователь может выбрать, включают пользователей, контакт, группу и компьютерные объекты. Дополнительные сведения о службах домен Active Directory см. в разделе домен Active Directory Services.
Чтобы отобразить диалоговое окно выбора объектов, выполните следующие действия.
- Вызовите функцию CoCreateInstance или CoCreateInstanceEx, чтобы создать экземпляр интерфейса IDsObjectPicker.
- Вызовите метод IDsObjectPicker::Initialize, чтобы инициализировать диалоговое окно.
- Вызовите метод IDsObjectPicker::InvokeDialog, чтобы отобразить диалоговое окно.
- Вызовите метод IDataObject::GetData экземпляра IDataObject, возвращаемого диалоговым окном выбора объектов, чтобы получить данные CFSTR_DSOP_DS_SELECTION_LIST. Формат буфера обмена CFSTR_DSOP_DS_SELECTION_LIST предоставляет HGLOBAL , содержащий структуру DS_SELECTION_LIST . Структура DS_SELECTION_LIST содержит данные о элементах, выбранных в диалоговом окне выбора объектов.
Если для объекта требуется идентификатор безопасности (SID), его необходимо запросить непосредственно из средства выбора объектов, добавив атрибут objectSID в список атрибутов, которые необходимо получить для выбранного объекта. Передача возвращаемого имени объекта функции LsaLookupNames или LookupAccountName не рекомендуется, так как поиск имен будет избыточным и в некоторых случаях может завершиться ошибкой.
Если ссылка на выбранные объекты будет сохранена, различающееся имя не должно быть сохранено, так как объект может перемещаться, переименовывать или изменяться из-за различий языкового стандарта. Для субъектов безопасности идентификатор objectSID должен запрашиваться для объекта и безопасно сохранен. Если имя субъекта безопасности необходимо позже, его можно получить с помощью функции LookupAccountSid. Для всех остальных объектов идентификатор objectGUID должен быть запрошен и сохранен.
При инициализации диалогового окна выбора объектов указывается набор типов и фильтров область. Указанные область типы определяют расположения, домены или компьютеры, из которых пользователь может выбирать объекты. Фильтры определяют типы объектов, которые пользователь может выбрать из заданного типа область. Дополнительные сведения см. в разделе "Области и фильтры" ниже.
По умолчанию пользователь может выбрать один объект в диалоговом окне выбора объектов каталога. Чтобы включить несколько выборов, задайте флаг DSOP_FLAG_MULTISELECT в элементе flOptions структуры DSOP_INIT_INFO при инициализации диалогового окна.
В раскрывающемся списке "Поиск" содержатся область, из которых пользователь может выбирать объекты. Область — это домен, компьютер, рабочая группа или глобальный каталог, который хранит данные и предоставляет доступ к набору доступных объектов. Записи в списке область зависят от типов область и целевого компьютера, указанного при последнем вызове метода IDsObjectPicker::Initialize для инициализации диалогового окна выбора объектов.
Тип область — это универсальная категория область, например все домены предприятия, к которым принадлежит целевой компьютер, или глобальный каталог для предприятия целевого компьютера или целевого компьютера. Для каждого указанного типа область диалоговое окно использует контекст целевого компьютера для определения записей списка область.
Метод IDsObjectPicker::Initialize принимает указатель на структуру DSOP_INIT_INFO, содержащую массив структур DSOP_SCOPE_INIT_INFO. Каждая запись в массиве DSOP_SCOPE_INIT_INFO задает один или несколько типов область, а также применимые фильтры и другие атрибуты. Фильтры определяют типы объектов, например пользователей, групп, контактов и компьютеров, которые пользователь может выбрать из заданного типа область. Когда пользователь выбирает область из списка, диалоговое окно применяет фильтры для этого типа область для отображения списка объектов, из которых пользователь может выбрать.
Каждая DSOP_SCOPE_INIT_INFO структура содержит DSOP_FILTER_FLAGS структуру, указывающую фильтры для этого типа область. Структура DSOP_FILTER_FLAGS различает область верхнего и нижнего уровня:
- Область верхнего уровня — это глобальный каталог или домен, поддерживающий поставщик LDAP ADSI.
- Область нижнего уровня включает рабочие группы и все отдельные компьютеры. В диалоговом окне для доступа к область нижнего уровня используется поставщик ADSI WinNT.
Существует два набора флагов фильтров, определенных для использования в структуре DSOP_FILTER_FLAGS: один для область верхнего уровня и один для область нижнего уровня. Элемент uplevel структуры DSOP_FILTER_FLAGS — это DSOP_UPLEVEL_FILTER_FLAGS структура, указывающая фильтры для область верхнего уровня. Элемент flDownlevel структуры DSOP_FILTER_FLAGS — это набор флагов, определяющих фильтры для область нижнего уровня.