Compartilhar via


Função LsaLookupSids2 (ntsecapi.h)

A função LsaLookupSids2 pesquisa os nomes que correspondem a uma matriz de SIDs ( identificadores de segurança ) e dá suporte a identidades de provedor de Internet. Se LsaLookupSids2 não conseguir encontrar um nome que corresponda a um SID, a função retornará o SID no formato de caractere. Você deve usar essa função em vez da função LsaLookupSids .

Sintaxe

NTSTATUS LsaLookupSids2(
  [in]  LSA_HANDLE                  PolicyHandle,
  [in]  ULONG                       LookupOptions,
  [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] LookupOptions

Sinalizadores que modificam o comportamento de pesquisa.

Valor Significado
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
Os SIDs da Internet de provedores de identidade para contas conectadas não são permitidos. As contas conectadas são aquelas que têm uma conta de sombra correspondente no banco de dados SAM local conectado a um provedor de identidade online. Por exemplo, MicrosoftAccount é uma conta conectada.
LSA_LOOKUP_PREFER_INTERNET_NAMES
Retorna os nomes da Internet. Caso contrário, o nome de estilo NT4 (domain\username) será retornado. A exceção será se o SID da Internet da Conta microsoft for especificado, nesse caso, o nome da Internet será retornado, a menos que LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID seja especificado.
LSA_LOOKUP_RETURN_LOCAL_NAMES
Sempre retorna nomes de conta SAM locais mesmo para identidades de provedor de Internet.

[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

O sinalizador LSA_LOOKUP_PREFER_INTERNET_NAMES deve ser usado para contas da Internet, como contas do MicrosoftAccount e do Azure Active Directory. Quando esse sinalizador é especificado, SID-Name pesquisa retorna o UPN da conta no formato MicrosoftAccount\foo@outlook.com ou AzureAD\foo@contoso.com. Para contas da Microsoft, tanto o SID sam local quanto o SID da Internet resultam no retorno do UPN se esse sinalizador for especificado. Se LSA_LOOKUP_PREFER_INTERNET_NAMES não for especificado, para contas do AAD, o nome de estilo NT4 do formulário AzureAD\foo será retornado. O nome do estilo NT4 é específico do computador e seu uso deve ser cuidadosamente avaliado e, se possível, deve ser evitado. Para MicrosoftAccounts se LSA_LOOKUP_PREFER_INTERNET_NAMES não for especificado, o SID local da conta será convertido no nome SAM local e o SID da Internet será convertido no nome UPN.

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 LsaLookupSids2 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, lsaLookupSids2 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 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [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