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.
[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 |
---|---|
|
Algunos de los SID no se pudieron traducir. Se trata de un valor devuelto de nivel informativo. |
|
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 |
---|---|
|
Ninguno de los SID se traducía. Se trata de un valor devuelto de nivel de error. |
|
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:
- 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.
- 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 .
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 |