Função LsaLookupSids (ntsecapi.h)

[LsaLookupSids está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele poderá ser alterado ou ficar indisponível em versões subsequentes. Em vez disso, use LsaLookupSids2.]

A função LsaLookupSids pesquisa os nomes que correspondem a uma matriz de SIDs ( identificadores de segurança ). Se LsaLookupSids não encontrar um nome que corresponda a um SID, a função retornará o SID no formato de caractere.

Sintaxe

NTSTATUS LsaLookupSids(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       Count,
  [in]  PSID                        *Sids,
  [out] PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
  [out] PLSA_TRANSLATED_NAME        *Names
);

Parâmetros

[in] PolicyHandle

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

[in] Count

Especifica o número de SIDs na matriz Sids . Esse também é o número de entradas retornadas na matriz Nomes . Esse valor deve ser menor ou igual a 20480.

[in] Sids

Ponteiro para uma matriz de ponteiros SID para pesquisar. Os SIDs podem ser SIDs conhecidos, SIDs de usuário, grupo ou conta de grupo local ou SIDs de domínio.

[out] ReferencedDomains

Recebe um ponteiro para um ponteiro para uma estrutura de LSA_REFERENCED_DOMAIN_LIST . O membro Domains dessa estrutura é uma matriz que contém uma entrada para cada domínio no qual um SID foi encontrado. A entrada para cada domínio contém o SID e o nome simples do domínio. Para domínios do Windows, o nome simples é o nome NetBIOS. Para links com domínios não Windows, o nome simples é o nome de identificação desse domínio ou é NULL.

Quando você não precisar mais das informações, passe o ponteiro retornado para 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] Names

Recebe um ponteiro para uma matriz de estruturas de LSA_TRANSLATED_NAME . Cada entrada na matriz Nomes contém as informações de nome da entrada correspondente na matriz Sids . Para SIDs de conta, o membro Name de cada estrutura contém o nome isolado da conta. Para SIDs de domínio, o membro Name não é válido.

O membro DomainIndex de cada entrada na matriz Names é o índice de uma entrada na matriz Domains retornada no parâmetro ReferencedDomains . O índice identifica a matriz Domains para o domínio no qual o SID foi encontrado.

Quando você não precisar mais das informações, passe o ponteiro retornado para 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, o valor retornado será um dos seguintes valores NTSTATUS .

Código de retorno Descrição
STATUS_SOME_NOT_MAPPED
Não foi possível traduzir alguns dos SIDs. Esse é um valor retornado de nível informativo.
STATUS_SUCCESS
Todos os SIDs foram encontrados e traduzidos com êxito.
 

Se a função falhar, o valor retornado será um código NTSTATUS , que pode ser um dos valores a seguir ou um dos valores retornados da função de política LSA.

Código de retorno Descrição
STATUS_NONE_MAPPED
Nenhum dos SIDs foi convertido. Esse é um valor retornado no nível de erro.
STATUS_TOO_MANY_SIDS
O parâmetro de matriz Sids era muito grande.
 

Você pode usar a função LsaNtStatusToWinError para converter o código NTSTATUS em um código de erro do Windows.

Comentários

Para SIDs de conta, a cadeia de caracteres retornada no membro Name é o nome isolado da conta (por exemplo, user_name). Se você precisar do nome composto da conta (por exemplo, Acctg\user_name), obtenha o nome de domínio do buffer ReferencedDomains e acrescente uma barra invertida e o nome isolado.

Se a função LsaLookupSids não puder traduzir um SID, a função usará o seguinte algoritmo:

  1. Se o domínio do SID for conhecido, o buffer ReferencedDomains conterá uma entrada para o domínio e a cadeia de caracteres retornada no parâmetro Names será uma representação Unicode do RID (identificador relativo) da conta do SID.
  2. Se o domínio do SID não for conhecido, a cadeia de caracteres retornada no parâmetro Names será uma representação Unicode de todo o SID e não haverá nenhum registro de domínio para esse SID no buffer ReferencedDomains .
Além de pesquisar SIDs para contas locais, contas de domínio local e contas de domínio explicitamente confiáveis, o LsaLookupSids pode procurar SIDs para qualquer conta em qualquer domínio na floresta do Windows, incluindo SIDs que aparecem apenas no campo SIDhistory de uma conta na floresta. O campo SIDhistory armazena os SIDs antigos de uma conta que foi movida de outro domínio. Para executar essas pesquisas, a função consulta o catálogo global da floresta.

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_NAME

LsaOpenPolicy