Partilhar via


Seletor de objetos de diretório

A caixa de diálogo seletor de objetos de diretório permite que um usuário selecione um ou mais objetos do catálogo global, de um domínio ou computador ou de um grupo de trabalho. Os tipos de objeto dos quais um usuário pode selecionar incluem objetos de usuário, contato, grupo e computador. Para obter mais informações sobre os Serviços de Domínio Ative Directory, consulte Serviços de Domínio Ative Directory.

Para exibir uma caixa de diálogo do seletor de objetos:

  1. Chame o CoCreateInstance ou função de CoCreateInstanceEx para criar uma instância do IDsObjectPicker interface.
  2. Chame o IDsObjectPicker::Initialize método para inicializar a caixa de diálogo.
  3. Chame o IDsObjectPicker::InvokeDialog método para exibir a caixa de diálogo.
  4. Chame o método IDataObject::GetData da instância deIDataObject doretornada pela caixa de diálogo do seletor de objetos para recuperar os dados CFSTR_DSOP_DS_SELECTION_LIST. O formato CFSTR_DSOP_DS_SELECTION_LIST área de transferência fornece um HGLOBAL que contém uma estrutura DS_SELECTION_LIST. A estrutura DS_SELECTION_LIST contém dados sobre os itens selecionados na caixa de diálogo do seletor de objetos.

Se o identificador de segurança (SID) for necessário para um objeto, isso deve ser solicitado diretamente do seletor de objetos adicionando o atributo objectSID à lista de atributos a serem recuperados para o objeto selecionado. Passar o nome do objeto retornado para o LsaLookupNames ou função de LookupAccountName não é recomendado porque a pesquisa de nome será redundante e poderá falhar em alguns casos.

Se uma referência a qualquer objeto selecionado for salva, o nome distinto não deverá ser salvo porque o objeto pode se mover, ser renomeado ou pode mudar devido a diferenças de localidade. Para entidades de segurança, o objectSID deve ser solicitado para o objeto e salvo com segurança. Se o nome da entidade de segurança for necessário posteriormente, ele poderá ser recuperado com a funçãoLookupAccountSid. Para todos os outros objetos, o objectGUID deve ser solicitado e salvo.

Inicialização

Quando a caixa de diálogo do seletor de objetos é inicializada, um conjunto de tipos de escopo e filtros é especificado. Os tipos de escopo especificados determinam os locais, domínios ou computadores, por exemplo, a partir dos quais um usuário pode selecionar objetos. Os filtros determinam os tipos de objetos que um usuário pode selecionar a partir de um determinado tipo de escopo. Para obter mais informações, consulte a seção Escopos e filtros abaixo.

Por padrão, um usuário pode selecionar um único objeto na caixa de diálogo seletor de objetos de diretório. Para habilitar várias seleções, defina o sinalizador DSOP_FLAG_MULTISELECT no flOptions membro da estrutura DSOP_INIT_INFO quando a caixa de diálogo for inicializada.

Escopos e filtros

A lista suspensa Examinar contém os escopos a partir dos quais um usuário pode selecionar objetos. Um escopo é um domínio, computador, grupo de trabalho ou catálogo global que armazena dados sobre, e fornece acesso a, um conjunto de objetos disponíveis. As entradas na lista de escopo dependem dos tipos de escopo e do computador de destino especificado quando o método IDsObjectPicker::Initialize foi chamado pela última vez para inicializar a caixa de diálogo do seletor de objetos.

Um tipo de escopo é uma categoria genérica de escopos, como todos os domínios da empresa à qual o computador de destino pertence, ou o catálogo global da empresa do computador de destino, ou o próprio computador de destino. Para cada tipo de escopo especificado, a caixa de diálogo usa o contexto do computador de destino para determinar as entradas da lista de escopo.

O método IDsObjectPicker::Initialize leva um ponteiro para uma estrutura DSOP_INIT_INFO que contém uma matriz de estruturas DSOP_SCOPE_INIT_INFO. Cada entrada na matriz DSOP_SCOPE_INIT_INFO especifica um ou mais tipos de escopo, bem como filtros aplicáveis e outros atributos. Os filtros determinam os tipos de objetos, como usuários, grupos, contatos e computadores, que o usuário pode selecionar a partir de um determinado tipo de escopo. Quando o usuário seleciona um escopo na lista, a caixa de diálogo aplica os filtros desse tipo de escopo para exibir uma lista de objetos dos quais o usuário pode selecionar.

Cada estrutura DSOP_SCOPE_INIT_INFO contém uma estrutura DSOP_FILTER_FLAGS que especifica os filtros para esse tipo de escopo. A estrutura DSOP_FILTER_FLAGS distingue entre escopos de nível superior e inferior:

  • Um escopo de nível superior é um catálogo global ou um domínio que suporta o provedor ADSI LDAP.
  • Um escopo de nível inferior inclui grupos de trabalho e todos os computadores individuais. A caixa de diálogo usa o provedor ADSI WinNT para acessar um escopo de nível inferior.

Há dois conjuntos de sinalizadores de filtro definidos para uso na estrutura DSOP_FILTER_FLAGS: um para escopos de nível superior e outro para escopos de nível inferior. O Uplevel membro da estrutura DSOP_FILTER_FLAGS é uma estrutura DSOP_UPLEVEL_FILTER_FLAGS que especifica os filtros para escopos de nível superior. O flDownlevel membro da estrutura DSOP_FILTER_FLAGS é um conjunto de sinalizadores que especificam os filtros para escopos de nível inferior.