Partager via


LsaLookupNames2, fonction (ntsecapi.h)

La fonction LsaLookupNames2 récupère les identificateurs de sécurité (SID) pour les noms de compte spécifiés. LsaLookupNames2 peut rechercher le SID pour n’importe quel compte dans n’importe quel domaine d’une forêt Windows.

La fonction LsaLookupNames est remplacée par la fonction LsaLookupNames2 . Les applications doivent utiliser la fonction LsaLookupNames2 pour garantir la compatibilité future.

Cette fonction diffère de la fonction LsaLookupNames en ce que LsaLookupNames2 retourne chaque SID en tant qu’élément unique, tandis que LsaLookupNames divise chaque SID en une paire RID/domaine.

Syntaxe

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

Paramètres

[in] PolicyHandle

Handle d’un objet Policy . Le 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] Flags

Valeurs qui contrôlent le comportement de cette fonction. La valeur suivante est actuellement définie.

Valeur Signification
LSA_LOOKUP_ISOLATED_AS_LOCAL
0x80000000
La fonction recherche uniquement sur les systèmes locaux les noms qui ne spécifient pas de domaine. La fonction recherche sur les systèmes distants les noms qui spécifient un domaine.

[in] Count

Spécifie le nombre de noms dans le tableau Names . Il s’agit également du nombre d’entrées retournées dans le tableau Sids .

[in] Names

Pointeur vers un tableau de structures LSA_UNICODE_STRING qui contiennent les noms à rechercher. Ces chaînes peuvent être les noms des comptes d’utilisateur, de groupe ou de groupe local, ou les noms de domaines. Les noms de domaine peuvent être des noms de domaine DNS ou des noms de domaine NetBIOS.

Pour plus d’informations sur le format des chaînes de nom, consultez Remarques.

[out] ReferencedDomains

Reçoit 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 nom a été trouvé. Le membre DomainIndex de chaque entrée du tableau Sids est l’index de l’entrée de tableau Domains pour le domaine dans lequel le nom a été trouvé.

Lorsque vous avez terminé d’utiliser le pointeur retourné, libérez-le en appelant le
Fonction 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] Sids

Reçoit un pointeur vers un tableau de structures LSA_TRANSLATED_SID2 . Chaque entrée du tableau Sids contient les informations SID de l’entrée correspondante dans le tableau Names .

Lorsque vous avez terminé d’utiliser le pointeur retourné, libérez-le en appelant le
Fonction 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 fonction retourne l’une des valeurs NTSTATUS suivantes.

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

Si la fonction échoue, la valeur de retour est la valeur NTSTATUS suivante ou l’une des valeurs de retour de la fonction de stratégie LSA.

Valeur Description
STATUS_NONE_MAPPED
Aucun des noms n’a été traduit.
 

Utilisez la fonction LsaNtStatusToWinError pour convertir le code NTSTATUS en code d’erreur Windows.

Remarques

Utilisez des noms de compte complets (par exemple, DomainName\UserName) au lieu de noms isolés (par exemple, UserName). Les noms complets sont non ambigus et offrent de meilleures performances lorsque la recherche est effectuée. Cette fonction prend également en charge les noms DNS complets (par exemple, Exemple.Exemple .com\UserName) et les noms d’utilisateur principaux (UPN) (par exemple, Exemple de quelqu’un@.com).

La traduction de noms isolés introduit la possibilité de collisions de noms, car le même nom peut être utilisé dans plusieurs domaines. La fonction LsaLookupNames2 utilise l’algorithme suivant pour traduire des noms isolés.

Pour traduire des noms isolés

  1. Si le nom est un nom connu, par exemple Local ou Interactif, la fonction retourne l’identificateur de sécurité (SID) connu correspondant.
  2. Si le nom est le nom du domaine intégré, la fonction retourne le SID de ce domaine.
  3. Si le nom est le nom du domaine du compte, la fonction retourne le SID de ce domaine.
  4. Si le nom est le nom du domaine principal, la fonction retourne le SID de ce domaine.
  5. Si le nom est l’un des noms du domaine approuvé, la fonction retourne le SID de ce domaine.
  6. Si le nom est un compte d’utilisateur, de groupe ou de groupe local dans le domaine intégré, la fonction retourne le SID de ce compte.
  7. Si le nom est un compte d’utilisateur, de groupe ou de groupe local dans le domaine du compte sur le système local, la fonction retourne le SID de ce compte.
  8. Si le nom est un utilisateur, un groupe ou un groupe local dans le domaine principal, la fonction retourne le SID de ce compte.
  9. Après avoir cherché dans le domaine principal, la fonction recherche dans chacun des domaines approuvés du domaine principal.
  10. Sinon, le nom n’est pas traduit.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [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_SID2

LSA_UNICODE_STRING

LsaFreeMemory