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.
[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 |
---|---|
|
Não foi possível traduzir alguns dos SIDs. Esse é um valor retornado de nível informativo. |
|
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 |
---|---|
|
Nenhum dos SIDs foi convertido. Esse é um valor retornado no nível de erro. |
|
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:
- 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.
- 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 .
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 |