Partager via


LsaLookupSids2, fonction (ntsecapi.h)

La fonction LsaLookupSids2 recherche les noms qui correspondent à un tableau d’identificateurs de sécurité (SID) et prend en charge les identités des fournisseurs Internet. Si LsaLookupSids2 ne trouve pas de nom correspondant à un SID, la fonction retourne le SID sous forme de caractères. Vous devez utiliser cette fonction au lieu de la fonction LsaLookupSids .

Syntaxe

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
);

Paramètres

[in] PolicyHandle

Handle d’un objet Policy . Ce handle doit avoir le droit d’accès POLICY_LOOKUP_NAMES. Pour plus d’informations, consultez Ouverture d’un handle d’objet de stratégie.

[in] LookupOptions

Indicateurs qui modifient le comportement de recherche.

Valeur Signification
LSA_LOOKUP_DISALLOW_CONNECTED_ACCOUNT_INTERNET_SID
Les SID Internet des fournisseurs d’identité pour les comptes connectés ne sont pas autorisés. Les comptes connectés sont les comptes qui ont un compte fantôme correspondant dans la base de données SAM locale connectée à un fournisseur d’identité en ligne. Par exemple, MicrosoftAccount est un compte connecté.
LSA_LOOKUP_PREFER_INTERNET_NAMES
Retourne les noms Internet. Sinon, le nom de style NT4 (domaine\nom d’utilisateur) est retourné. L’exception est si le SID Internet du compte Microsoft est spécifié, auquel cas le nom Internet est retourné, sauf si LSA_LOOKUP_DISALLOW_NON_WINDOWS_INTERNET_SID est spécifié.
LSA_LOOKUP_RETURN_LOCAL_NAMES
Retourne toujours les noms de comptes SAM locaux, même pour les identités de fournisseur Internet.

[in] Count

Spécifie le nombre de SID dans le tableau Sids . Il s’agit également du nombre d’entrées retournées dans le tableau Names . Cette valeur doit être inférieure ou égale à 20480.

[in] Sids

Pointeur vers un tableau de pointeurs SID à rechercher. Les SID peuvent être des SID connus, des SID d’utilisateur, de groupe ou de compte de groupe local, ou des SID de domaine.

[out] ReferencedDomains

Reçoit un pointeur vers un pointeur vers une structure LSA_REFERENCED_DOMAIN_LIST . Le membre Domains de cette structure est un tableau qui contient une entrée pour chaque domaine dans lequel un SID a été trouvé. L’entrée de chaque domaine contient le SID et le nom plat du domaine. Pour les domaines Windows, le nom plat est le nom NetBIOS. Pour les liens avec des domaines non Windows, le nom plat est le nom d’identification de ce domaine, ou il est NULL.

Lorsque vous n’avez plus besoin des informations, passez le pointeur retourné à LsaFreeMemory. Cette mémoire doit être libérée même lorsque la fonction échoue avec l’un des codes d’erreur STATUS_NONE_MAPPED ou STATUS_SOME_NOT_MAPPED

[out] Names

Reçoit un pointeur vers un tableau de structures LSA_TRANSLATED_NAME . Chaque entrée du tableau Names contient les informations de nom de l’entrée correspondante dans le tableau Sids . Pour les SID de compte, le membre Name de chaque structure contient le nom isolé du compte. Pour les SID de domaine, le membre Name n’est pas valide.

Le membre DomainIndex de chaque entrée du tableau Names est l’index d’une entrée dans le tableau Domains retourné dans le paramètre ReferencedDomains . L’index identifie le tableau Domains pour le domaine dans lequel le SID a été trouvé.

Lorsque vous n’avez plus besoin des informations, passez le pointeur retourné à LsaFreeMemory. Cette mémoire doit être libérée même lorsque la fonction échoue avec l’un des codes d’erreur STATUS_NONE_MAPPED ou STATUS_SOME_NOT_MAPPED

Valeur retournée

Si la fonction réussit, la valeur de retour est l’une des valeurs NTSTATUS suivantes.

Code de retour Description
STATUS_SOME_NOT_MAPPED
Certains SID n’ont pas pu être traduits. Il s’agit d’une valeur de retour de niveau informationnel.
STATUS_SUCCESS
Tous les SID ont été trouvés et traduits avec succès.
 

Si la fonction échoue, la valeur de retour est un code NTSTATUS , qui peut être l’une des valeurs suivantes ou l’une des valeurs de retour de la fonction de stratégie LSA.

Code de retour Description
STATUS_NONE_MAPPED
Aucun des SID n’a été traduit. Il s’agit d’une valeur de retour au niveau de l’erreur.
STATUS_TOO_MANY_SIDS
Le paramètre de tableau Sids était trop grand.
 

Vous pouvez utiliser la fonction LsaNtStatusToWinError pour convertir le code NTSTATUS en code d’erreur Windows.

Remarques

L’indicateur LSA_LOOKUP_PREFER_INTERNET_NAMES doit être utilisé pour les comptes Internet tels que Les comptes MicrosoftAccount et Azure Active Directory. Lorsque cet indicateur est spécifié, SID-Name recherche retourne l’UPN du compte sous la forme MicrosoftAccount\foo@outlook.com ou AzureAD\foo@contoso.com. Pour les comptes Microsoft, le SID SAM local et le SID Internet entraînent le retour de l’UPN si cet indicateur est spécifié. Si LSA_LOOKUP_PREFER_INTERNET_NAMES n’est pas spécifié, pour les comptes AAD, le nom de style NT4 sous la forme AzureAD\foo est retourné. Le nom de style NT4 est spécifique à la machine et son utilisation doit être soigneusement évaluée et, si possible, doit être évitée. Pour MicrosoftAccounts, si LSA_LOOKUP_PREFER_INTERNET_NAMES n’est pas spécifié, le SID local du compte se traduit en nom SAM local et le SID Internet traduit en nom UPN.

Pour les SID de compte, la chaîne retournée dans le membre Name est le nom isolé du compte (par exemple, user_name). Si vous avez besoin du nom composite du compte (par exemple, Acctg\user_name), récupérez le nom de domaine à partir de la mémoire tampon ReferencedDomains et ajoutez une barre oblique inverse et le nom isolé.

Si la fonction LsaLookupSids2 ne peut pas traduire un SID, la fonction utilise l’algorithme suivant :

  1. Si le domaine du SID est connu, la mémoire tampon ReferencedDomains contient une entrée pour le domaine, et la chaîne retournée dans le paramètre Names est une représentation Unicode de l’identificateur relatif (RID) du compte à partir du SID.
  2. Si le domaine du SID n’est pas connu, la chaîne retournée dans le paramètre Names est une représentation Unicode de l’ensemble du SID, et il n’existe aucun enregistrement de domaine pour ce SID dans la mémoire tampon ReferencedDomains .
En plus de rechercher des SID pour les comptes locaux, les comptes de domaine locaux et les comptes de domaine explicitement approuvés, LsaLookupSids2 peut rechercher des SID pour n’importe quel compte dans n’importe quel domaine de la forêt Windows, y compris les SID qui apparaissent uniquement dans le champ SIDhistory d’un compte dans la forêt. Le champ SIDhistory stocke les anciens SID d’un compte qui a été déplacé d’un autre domaine. Pour effectuer ces recherches, la fonction interroge le catalogue global de la forêt.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête ntsecapi.h
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

LSA_REFERENCED_DOMAIN_LIST

LSA_TRANSLATED_NAME

LsaOpenPolicy