Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диалоговое окно выбора объектов каталога позволяет пользователю выбрать один или несколько объектов из глобального каталога, домена или компьютера или рабочей группы. Типы объектов, из которых пользователь может выбрать, включают пользователей, контакт, группу и компьютерные объекты. Дополнительные сведения о доменных службах Active Directory см. в доменных службах Active Directory.
Чтобы отобразить диалоговое окно выбора объектов, выполните следующие действия.
- Вызовите функцию coCreateInstance или CoCreateInstanceEx, чтобы создать экземпляр интерфейса IDsObjectPi cker.
- Вызовите метод 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 при инициализации диалогового окна.
Области и фильтры
В раскрывающемся списке Look in содержатся области, из которых пользователь может выбирать объекты. Область — это домен, компьютер, рабочая группа или глобальный каталог, который хранит данные и предоставляет доступ к набору доступных объектов. Записи в списке областей зависят от типов областей и целевого компьютера, указанного при последнем вызове метода 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 различает области верхнего и нижнего уровня:
- Область выше уровня — это глобальный каталог или домен, поддерживающий поставщика LDAPADSI.
- Область нижнего уровня включает рабочие группы и все отдельные компьютеры. В диалоговом окне используется поставщик ADSI WinNT для доступа к области нижнего уровня.
Существует два набора флагов фильтров, определенных для использования в структуре DSOP_FILTER_FLAGS: один для областей верхнего уровня и один для областей нижнего уровня. Элемент uplevel структуры DSOP_FILTER_FLAGS — это DSOP_UPLEVEL_FILTER_FLAGS структура, указывающая фильтры для областей верхнего уровня. Элемент flDownlevel структуры DSOP_FILTER_FLAGS — это набор флагов, определяющих фильтры для областей нижнего уровня.