Selector de objetos de directorio
El cuadro de diálogo selector de objetos de directorio permite a un usuario seleccionar uno o varios objetos del catálogo global, un dominio o equipo o un grupo de trabajo. Los tipos de objeto de los que un usuario puede seleccionar incluyen objetos user, contact, group y computer. Para obtener más información sobre Servicios de dominio de Active Directory, consulte Servicios de dominio de Active Directory.
Para mostrar un cuadro de diálogo del selector de objetos:
- Llame a la función CoCreateInstance o CoCreateInstanceEx para crear una instancia de la interfaz IDsObjectPicker .
- Llame al método IDsObjectPicker::Initialize para inicializar el cuadro de diálogo.
- Llame al método IDsObjectPicker::InvokeDialog para mostrar el cuadro de diálogo.
- Llame al método IDataObject::GetData de la instancia IDataObject devuelta por el cuadro de diálogo del selector de objetos para recuperar los datos de CFSTR_DSOP_DS_SELECTION_LIST . El formato CFSTR_DSOP_DS_SELECTION_LIST portapapeles proporciona un HGLOBAL que contiene una estructura DS_SELECTION_LIST . La estructura DS_SELECTION_LIST contiene datos sobre los elementos seleccionados en el cuadro de diálogo selector de objetos.
Si se requiere el identificador de seguridad (SID) para un objeto, debe solicitarse directamente desde el selector de objetos agregando el atributo objectSID a la lista de atributos que se van a recuperar para el objeto seleccionado. No se recomienda pasar el nombre de objeto devuelto a la función LsaLookupNames o LookupAccountName porque la búsqueda de nombres será redundante y puede producir un error en algunos casos.
Si se guardará una referencia a cualquier objeto seleccionado, no se debe guardar el nombre distintivo porque el objeto puede moverse, cambiar el nombre o cambiar debido a diferencias de configuración regional. En el caso de las entidades de seguridad, el objectSID debe solicitarse para el objeto y guardarse de forma segura. Si el nombre de la entidad de seguridad es necesario más adelante, se puede recuperar con la función LookupAccountSid . Para todos los demás objetos, se debe solicitar y guardar objectGUID .
Inicialización
Cuando se inicializa el cuadro de diálogo selector de objetos, se especifica un conjunto de tipos de ámbito y filtros. Los tipos de ámbito especificados determinan las ubicaciones, dominios o equipos, por ejemplo, desde las que un usuario puede seleccionar objetos. Los filtros determinan los tipos de objetos que un usuario puede seleccionar de un tipo de ámbito determinado. Para obtener más información, consulte la sección Ámbitos y filtros a continuación.
De forma predeterminada, un usuario puede seleccionar un solo objeto en el cuadro de diálogo selector de objetos de directorio. Para habilitar varias selecciones, establezca la marca DSOP_FLAG_MULTISELECT en el miembro flOptions de la estructura DSOP_INIT_INFO cuando se inicialice el cuadro de diálogo.
Ámbitos y filtros
La lista desplegable Buscar en contiene los ámbitos desde los que un usuario puede seleccionar objetos. Un ámbito es un dominio, equipo, grupo de trabajo o catálogo global que almacena datos sobre y proporciona acceso a un conjunto de objetos disponibles. Las entradas de la lista de ámbitos dependen de los tipos de ámbito y del equipo de destino especificados cuando se llamó por última vez al método IDsObjectPicker::Initialize para inicializar el cuadro de diálogo del selector de objetos.
Un tipo de ámbito es una categoría genérica de ámbitos, como todos los dominios de la empresa a los que pertenece el equipo de destino, o el catálogo global para la empresa del equipo de destino o el propio equipo de destino. Para cada tipo de ámbito especificado, el cuadro de diálogo usa el contexto del equipo de destino para determinar las entradas de la lista de ámbitos.
El método IDsObjectPicker::Initialize toma un puntero a una estructura de DSOP_INIT_INFO que contiene una matriz de estructuras de DSOP_SCOPE_INIT_INFO . Cada entrada de la matriz DSOP_SCOPE_INIT_INFO especifica uno o varios tipos de ámbito, así como filtros aplicables y otros atributos. Los filtros determinan los tipos de objetos, como usuarios, grupos, contactos y equipos, que el usuario puede seleccionar de un tipo de ámbito determinado. Cuando el usuario selecciona un ámbito de la lista, el cuadro de diálogo aplica los filtros para ese tipo de ámbito para mostrar una lista de objetos desde los que el usuario puede seleccionar.
Cada estructura de DSOP_SCOPE_INIT_INFO contiene una estructura de DSOP_FILTER_FLAGS que especifica los filtros de ese tipo de ámbito. La estructura de DSOP_FILTER_FLAGS distingue entre los ámbitos de nivel superior y abajo:
- Un ámbito de nivel superior es un catálogo global o un dominio que admite el proveedor LDAP adsi.
- Un ámbito de nivel descendente incluye grupos de trabajo y todos los equipos individuales. El cuadro de diálogo usa el proveedor WinNT ADSI para acceder a un ámbito de nivel descendente.
Hay dos conjuntos de marcas de filtro definidas para su uso en la estructura de DSOP_FILTER_FLAGS : una para ámbitos de nivel superior y otra para ámbitos de nivel descendente. El miembro Uplevel de la estructura DSOP_FILTER_FLAGS es una estructura DSOP_UPLEVEL_FILTER_FLAGS que especifica los filtros para ámbitos de nivel superior. El miembro flDownlevel de la estructura DSOP_FILTER_FLAGS es un conjunto de marcas que especifican los filtros para los ámbitos de nivel inferior.