Partager via


Fonction LsaLookupSids (ntsecapi.h)

[LsaLookupSids est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt LsaLookupSids2.]

La fonction LsaLookupSids recherche les noms qui correspondent à un tableau d’identificateurs de sécurité (SID). Si LsaLookupSids ne trouve pas de nom qui correspond à un SID, la fonction retourne le SID sous forme de caractères.

Syntaxe

NTSTATUS LsaLookupSids(
  [in]  LSA_HANDLE                  PolicyHandle,
  [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] 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 Noms . Cette valeur doit être inférieure ou égale à 20480.

[in] Sids

Pointeur vers un tableau de pointeurs SID à rechercher. Les SID peuvent être des SIDs bien 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 autres que 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 Noms 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 de niveau d’erreur.
STATUS_TOO_MANY_SIDS
Le paramètre de tableau Sids était trop volumineux.
 

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

Remarques

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 LsaLookupSids 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 renvoyé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, LsaLookupSids 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é à partir 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 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_NAME

LsaOpenPolicy