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.
[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 |
---|---|
|
Certains SID n’ont pas pu être traduits. Il s’agit d’une valeur de retour de niveau informationnel. |
|
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 |
---|---|
|
Aucun des SID n’a été traduit. Il s’agit d’une valeur de retour au niveau de l’erreur. |
|
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 :
- 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.
- 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 .
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 |