Función LsaLookupSids (ntsecapi.h)

[LsaLookupSids está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. En su lugar, use LsaLookupSids2.]

La función LsaLookupSids busca los nombres que corresponden a una matriz de identificadores de seguridad (SID). Si LsaLookupSids no encuentra un nombre que corresponde a un SID, la función devuelve el SID en formato de carácter.

Sintaxis

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

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] 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

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 LsaLookupSids 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, LsaLookupSids 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 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_NAME

LsaOpenPolicy