Función LsaLookupSids2 (ntsecapi.h)

La función LsaLookupSids2 busca los nombres que corresponden a una matriz de identificadores de seguridad (SID) y admite identidades de proveedor de Internet. Si LsaLookupSids2 no encuentra un nombre que corresponde a un SID, la función devuelve el SID en forma de caracteres. Debe usar esta función en lugar de la función LsaLookupSids .

Sintaxis

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

Identificador de un objeto Policy . Este identificador debe tener el derecho de acceso POLICY_LOOKUP_NAMES. Para obtener más información, vea Apertura de un identificador de objeto de directiva.

[in] LookupOptions

Marcas que modifican el comportamiento de búsqueda.

Valor Significado
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
No se permiten los SID de Internet de los proveedores de identidades para las cuentas conectadas. Las cuentas conectadas son aquellas que tienen una cuenta instantánea correspondiente en la base de datos SAM local conectada a un proveedor de identidades en línea. Por ejemplo, MicrosoftAccount es una cuenta conectada.
LSA_LOOKUP_PREFER_INTERNET_NAMES
Devuelve los nombres de Internet. De lo contrario, se devuelve el nombre de estilo NT4 (domain\username). La excepción es si se especifica el SID de Internet de la cuenta Microsoft, en cuyo caso se devuelve el nombre de Internet a menos que se especifique LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID .
LSA_LOOKUP_RETURN_LOCAL_NAMES
Siempre devuelve nombres de cuenta SAM locales incluso para las identidades del proveedor de Internet.

[in] Count

Especifica el número de SID en la matriz Sids . También es el número de entradas devueltas en la matriz Names . Este valor debe ser menor o igual que 20480.

[in] Sids

Puntero a una matriz de punteros SID que se van a buscar. Los SID pueden ser SID conocidos, siD de usuario, de grupo o de cuenta de grupo local, o siD de dominio.

[out] ReferencedDomains

Recibe un puntero a un puntero a una estructura de LSA_REFERENCED_DOMAIN_LIST . El miembro Domains de esta estructura es una matriz que contiene una entrada para cada dominio en el que se encontró un SID. La entrada de cada dominio contiene el SID y el nombre plano del dominio. En el caso de los dominios de Windows, el nombre plano es el nombre netBIOS. En el caso de los vínculos con dominios que no son de Windows, el nombre plano es el nombre de identificación de ese dominio o es NULL.

Cuando ya no necesite la información, pase el puntero devuelto a LsaFreeMemory. Esta memoria debe liberarse incluso cuando se produce un error en la función con los códigos de error STATUS_NONE_MAPPED o STATUS_SOME_NOT_MAPPED

[out] Names

Recibe un puntero a una matriz de estructuras de LSA_TRANSLATED_NAME . Cada entrada de la matriz Names contiene la información de nombre de la entrada correspondiente en la matriz Sids . En el caso de los SID de cuenta, el miembro Name de cada estructura contiene el nombre aislado de la cuenta. En el caso de los SID de dominio, el miembro Name no es válido.

El miembro DomainIndex de cada entrada de la matriz Names es el índice de una entrada de la matriz Domains devuelta en el parámetro ReferencedDomains . El índice identifica la matriz Domains del dominio en el que se encontró el SID.

Cuando ya no necesite la información, pase el puntero devuelto a LsaFreeMemory. Esta memoria debe liberarse incluso cuando se produce un error en la función con los códigos de error STATUS_NONE_MAPPED o STATUS_SOME_NOT_MAPPED

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es uno de los siguientes valores NTSTATUS .

Código devuelto Descripción
STATUS_SOME_NOT_MAPPED
Algunos de los SID no se pudieron traducir. Se trata de un valor devuelto de nivel informativo.
STATUS_SUCCESS
Todos los SID se encontraron y se traduciron correctamente.
 

Si se produce un error en la función, el valor devuelto es un código NTSTATUS , que puede ser uno de los siguientes valores o uno de los valores devueltos de la función de directiva LSA.

Código devuelto Descripción
STATUS_NONE_MAPPED
Ninguno de los SID se traducía. Se trata de un valor devuelto de nivel de error.
STATUS_TOO_MANY_SIDS
El parámetro de matriz Sids era demasiado grande.
 

Puede usar la función LsaNtStatusToWinError para convertir el código NTSTATUS en un código de error de Windows.

Comentarios

La marca LSA_LOOKUP_PREFER_INTERNET_NAMES debe usarse para cuentas de Internet como MicrosoftAccount y cuentas de Azure Active Directory. Cuando se especifica esta marca, SID-Name búsqueda devuelve el UPN de la cuenta con el formato MicrosoftAccount\foo@outlook.com o AzureAD\foo@contoso.com. En el caso de las cuentas Microsoft, tanto el SID sam local como el SID de Internet dan como resultado que se devuelva el UPN si se especifica esta marca. Si no se especifica LSA_LOOKUP_PREFER_INTERNET_NAMES para las cuentas de AAD, se devuelve el nombre de estilo NT4 del formulario AzureAD\foo. El nombre del estilo NT4 es específico de la máquina y su uso debe evaluarse cuidadosamente y, si es posible, debe evitarse. Para MicrosoftAccounts si no se especifica LSA_LOOKUP_PREFER_INTERNET_NAMES, el SID local de la cuenta se traduce en el nombre SAM local y el SID de Internet se traduce en el nombre de UPN.

En el caso de los SID de cuenta, la cadena devuelta en el miembro Name es el nombre aislado de la cuenta (por ejemplo, user_name). Si necesita el nombre compuesto de la cuenta (por ejemplo, Acctg\user_name), obtenga el nombre de dominio del búfer ReferencedDomains y anexe una barra diagonal inversa y el nombre aislado.

Si la función LsaLookupSids2 no puede traducir un SID, la función usa el siguiente algoritmo:

  1. Si se conoce el dominio del SID, el búfer ReferencedDomains contiene una entrada para el dominio y la cadena devuelta en el parámetro Names es una representación Unicode del identificador relativo (RID) de la cuenta del SID.
  2. Si no se conoce el dominio del SID, la cadena devuelta en el parámetro Names es una representación Unicode de todo el SID y no hay ningún registro de dominio para este SID en el búfer ReferencedDomains .
Además de buscar SID para cuentas locales, cuentas de dominio locales y cuentas de dominio de confianza explícita, LsaLookupSids2 puede buscar sids en cualquier cuenta de cualquier dominio del bosque de Windows, incluidos los SID que aparecen solo en el campo SIDhistory de una cuenta del bosque. El campo SIDhistory almacena los antiguos SID de una cuenta que se ha movido de otro dominio. Para realizar estas búsquedas, la función consulta el catálogo global del bosque.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ntsecapi.h
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy