Compartir a través de


Función LsaLookupNames2 (ntsecapi.h)

La función LsaLookupNames2 recupera los identificadores de seguridad (SID) para los nombres de cuenta especificados. LsaLookupNames2 puede buscar el SID para cualquier cuenta de cualquier dominio de un bosque de Windows.

La función LsaLookupNames se sustituye por la función LsaLookupNames2 . Las aplicaciones deben usar la función LsaLookupNames2 para garantizar la compatibilidad futura.

Esta función difiere de la función LsaLookupNames en que LsaLookupNames2 devuelve cada SID como un único elemento, mientras que LsaLookupNames divide cada SID en un par RID/dominio.

Sintaxis

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

Identificador de un objeto Policy . El 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] Flags

Valores que controlan el comportamiento de esta función. Actualmente se define el siguiente valor.

Valor Significado
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
La función solo busca nombres en los sistemas locales que no especifican un dominio. La función busca nombres en sistemas remotos que especifican un dominio.

[in] Count

Especifica el número de nombres de la matriz Names . También es el número de entradas devueltas en la matriz Sids .

[in] Names

Puntero a una matriz de estructuras de LSA_UNICODE_STRING que contienen los nombres que se van a buscar. Estas cadenas pueden ser los nombres de las cuentas de usuario, grupo o grupo local, o los nombres de los dominios. Los nombres de dominio pueden ser nombres de dominio DNS o nombres de dominio NetBIOS.

Para obtener más información sobre el formato de las cadenas de nombre, vea Comentarios.

[out] ReferencedDomains

Recibe un puntero a una estructura 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 nombre. El miembro DomainIndex de cada entrada de la matriz Sids es el índice de la entrada de la matriz Domains para el dominio en el que se encontró el nombre.

Cuando haya terminado de usar el puntero devuelto, libere mediante una llamada a .
Función 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] Sids

Recibe un puntero a una matriz de estructuras de LSA_TRANSLATED_SID2 . Cada entrada de la matriz Sids contiene la información del SID para la entrada correspondiente en la matriz Names .

Cuando haya terminado de usar el puntero devuelto, libere mediante una llamada a .
Función 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, la función devuelve uno de los siguientes valores NTSTATUS .

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

Si se produce un error en la función, el valor devuelto es el siguiente valor NTSTATUS o uno de los valores devueltos de la función de directiva LSA.

Valor Descripción
STATUS_NONE_MAPPED
Ninguno de los nombres se traducía.
 

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

Comentarios

Use nombres de cuenta completos (por ejemplo, DomainName\UserName) en lugar de nombres aislados (por ejemplo, UserName). Los nombres completos no son ambiguos y proporcionan un mejor rendimiento cuando se realiza la búsqueda. Esta función también admite nombres DNS completos (por ejemplo, ejemplo.Ejemplo.com\UserName) y nombres principales de usuario (UPN) (por ejemplo,Ejemplo de alguien@.com).

La traducción de nombres aislados presenta la posibilidad de colisiones de nombres porque el mismo nombre se puede usar en varios dominios. La función LsaLookupNames2 usa el siguiente algoritmo para traducir nombres aislados.

Para traducir nombres aislados

  1. Si el nombre es un nombre conocido, como Local o Interactivo, la función devuelve el identificador de seguridad conocido (SID) correspondiente.
  2. Si el nombre es el nombre del dominio integrado, la función devuelve el SID de ese dominio.
  3. Si el nombre es el nombre del dominio de cuenta, la función devuelve el SID de ese dominio.
  4. Si el nombre es el nombre del dominio principal, la función devuelve el SID de ese dominio.
  5. Si el nombre es uno de los nombres del dominio de confianza, la función devuelve el SID de ese dominio.
  6. Si el nombre es una cuenta de usuario, grupo o grupo local en el dominio integrado, la función devuelve el SID de esa cuenta.
  7. Si el nombre es una cuenta de usuario, grupo o grupo local en el dominio de cuenta del sistema local, la función devuelve el SID de esa cuenta.
  8. Si el nombre es un usuario, un grupo o un grupo local en el dominio principal, la función devuelve el SID de esa cuenta.
  9. Después de buscar en el dominio principal, la función busca en cada uno de los dominios de confianza del dominio principal.
  10. De lo contrario, el nombre no se traduce.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [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_SID2

LSA_UNICODE_STRING

LsaFreeMemory