Função LsaLookupNames2 (ntsecapi.h)

A função LsaLookupNames2 recupera os SIDs ( identificadores de segurança ) para nomes de conta especificados. LsaLookupNames2 pode pesquisar o SID para qualquer conta em qualquer domínio em uma floresta do Windows.

A função LsaLookupNames é substituída pela função LsaLookupNames2 . Os aplicativos devem usar a função LsaLookupNames2 para garantir a compatibilidade futura.

Essa função difere da função LsaLookupNames , pois LsaLookupNames2 retorna cada SID como um único elemento, enquanto LsaLookupNames divide cada SID em um par RID/domínio.

Sintaxe

NTSTATUS LsaLookupNames2(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Flags,
  [in]  ULONG                       Count,
  [in]  PLSA_UNICODE_STRING         Names,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_SID2        *Sids
);

Parâmetros

[in] PolicyHandle

Um identificador para um objeto Policy . O identificador deve ter o direito de acesso POLICY_LOOKUP_NAMES. Para obter mais informações, consulte Abrindo um identificador de objeto de política.

[in] Flags

Valores que controlam o comportamento dessa função. O valor a seguir está definido no momento.

Valor Significado
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
A função pesquisa apenas nos sistemas locais nomes que não especificam um domínio. A função pesquisa em sistemas remotos nomes que especificam um domínio.

[in] Count

Especifica o número de nomes na matriz Names . Esse também é o número de entradas retornadas na matriz Sids .

[in] Names

Ponteiro para uma matriz de estruturas LSA_UNICODE_STRING que contêm os nomes a serem pesquisados. Essas cadeias de caracteres podem ser os nomes de contas de usuário, grupo ou grupo local ou os nomes de domínios. Os nomes de domínio podem ser nomes de domínio DNS ou nomes de domínio NetBIOS.

Para obter mais informações sobre o formato das cadeias de caracteres de nome, consulte Comentários.

[out] ReferencedDomains

Recebe um ponteiro para uma estrutura LSA_REFERENCED_DOMAIN_LIST . O membro Domínios dessa estrutura é uma matriz que contém uma entrada para cada domínio no qual um nome foi encontrado. O membro DomainIndex de cada entrada na matriz Sids é o índice da entrada de matriz Domains para o domínio no qual o nome foi encontrado.

Quando terminar de usar o ponteiro retornado, libere-o chamando o
Função LsaFreeMemory . Essa memória deve ser liberada mesmo quando a função falha com um dos códigos de erro STATUS_NONE_MAPPED ou STATUS_SOME_NOT_MAPPED

[out] Sids

Recebe um ponteiro para uma matriz de estruturas LSA_TRANSLATED_SID2 . Cada entrada na matriz Sids contém as informações de SID para a entrada correspondente na matriz Names .

Quando terminar de usar o ponteiro retornado, libere-o chamando o
Função LsaFreeMemory . Essa memória deve ser liberada mesmo quando a função falha com um dos códigos de erro STATUS_NONE_MAPPED ou STATUS_SOME_NOT_MAPPED

Retornar valor

Se a função for bem-sucedida, a função retornará um dos seguintes valores NTSTATUS .

Valor Descrição
STATUS_SOME_NOT_MAPPED
Alguns dos nomes não puderam ser traduzidos. Esse é um valor retornado de nível informativo.
STATUS_SUCCESS
Todos os nomes foram encontrados e traduzidos com êxito.
 

Se a função falhar, o valor retornado será o seguinte valor NTSTATUS ou um dos valores retornados da função de política LSA.

Valor Descrição
STATUS_NONE_MAPPED
Nenhum dos nomes foi traduzido.
 

Use a função LsaNtStatusToWinError para converter o código NTSTATUS em um código de erro do Windows.

Comentários

Use nomes de conta totalmente qualificados (por exemplo, DomainName\UserName) em vez de nomes isolados (por exemplo, UserName). Nomes totalmente qualificados são inequívocas e fornecem melhor desempenho quando a pesquisa é executada. Essa função também dá suporte a nomes DNS totalmente qualificados (por exemplo, exemplo.Exemplo.com\UserName) e nomes upn (nome upn) (por exemplo, Exemplo de alguém@.com).

A tradução de nomes isolados apresenta a possibilidade de colisões de nome porque o mesmo nome pode ser usado em vários domínios. A função LsaLookupNames2 usa o algoritmo a seguir para traduzir nomes isolados.

Para traduzir nomes isolados

  1. Se o nome for um nome conhecido, como Local ou Interativo, a função retornará o SID ( identificador de segurança ) conhecido correspondente.
  2. Se o nome for o nome do domínio interno, a função retornará o SID desse domínio.
  3. Se o nome for o nome do domínio da conta, a função retornará o SID desse domínio.
  4. Se o nome for o nome do domínio primário, a função retornará o SID desse domínio.
  5. Se o nome for um dos nomes do domínio confiável, a função retornará o SID desse domínio.
  6. Se o nome for uma conta de usuário, grupo ou grupo local no domínio interno, a função retornará o SID dessa conta.
  7. Se o nome for uma conta de usuário, grupo ou grupo local no domínio da conta no sistema local, a função retornará o SID dessa conta.
  8. Se o nome for um usuário, um grupo ou um grupo local no domínio primário, a função retornará o SID dessa conta.
  9. Depois de examinar o domínio primário, a função examina cada um dos domínios confiáveis do domínio primário.
  10. Caso contrário, o nome não será traduzido.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ntsecapi.h
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_SID2

LSA_UNICODE_STRING

LsaFreeMemory