Partager via


Fonction LookupAccountSidA (winbase.h)

La fonction LookupAccountSid accepte un identificateur de sécurité (SID) comme entrée. Il récupère le nom du compte pour ce SID et le nom du premier domaine sur lequel ce SID est trouvé.

Syntaxe

BOOL LookupAccountSidA(
  [in, optional]  LPCSTR        lpSystemName,
  [in]            PSID          Sid,
  [out, optional] LPSTR         Name,
  [in, out]       LPDWORD       cchName,
  [out, optional] LPSTR         ReferencedDomainName,
  [in, out]       LPDWORD       cchReferencedDomainName,
  [out]           PSID_NAME_USE peUse
);

Paramètres

[in, optional] lpSystemName

Pointeur vers une chaîne de caractères terminée par null qui spécifie l’ordinateur cible. Cette chaîne peut être le nom d’un ordinateur distant. Si ce paramètre a la valeur NULL, la traduction du nom du compte commence sur le système local. Si le nom ne peut pas être résolu sur le système local, cette fonction tente de résoudre le nom à l’aide de contrôleurs de domaine approuvés par le système local. En règle générale, spécifiez une valeur pour lpSystemName uniquement lorsque le compte se trouve dans un domaine non approuvé et que le nom d’un ordinateur de ce domaine est connu.

[in] Sid

Pointeur vers le SID à rechercher.

[out, optional] Name

Pointeur vers une mémoire tampon qui reçoit une chaîne terminée par null qui contient le nom de compte correspondant au paramètre lpSid .

[in, out] cchName

Lors de l’entrée, spécifie la taille, en TCHAR, de la mémoire tampon lpName . Si la fonction échoue parce que la mémoire tampon est trop petite ou si cchName est égal à zéro, cchName reçoit la taille de mémoire tampon requise, y compris le caractère null de fin.

[out, optional] ReferencedDomainName

Pointeur vers une mémoire tampon qui reçoit une chaîne terminée par null qui contient le nom du domaine où le nom du compte a été trouvé.

Sur un serveur, le nom de domaine retourné pour la plupart des comptes dans la base de données de sécurité de l’ordinateur local est le nom du domaine pour lequel le serveur est un contrôleur de domaine.

Sur une station de travail, le nom de domaine retourné pour la plupart des comptes dans la base de données de sécurité de l’ordinateur local est le nom de l’ordinateur au dernier démarrage du système (les barres obliques inverses sont exclues). Si le nom de l’ordinateur change, l’ancien nom continue d’être retourné en tant que nom de domaine jusqu’à ce que le système soit redémarré.

Certains comptes sont prédéfinis par le système. Le nom de domaine retourné pour ces comptes est BUILTIN.

[in, out] cchReferencedDomainName

Lors de l’entrée, spécifie la taille, en TCHAR, de la mémoire tampon lpReferencedDomainName . Si la fonction échoue parce que la mémoire tampon est trop petite ou si cchReferencedDomainName est égal à zéro, cchReferencedDomainName reçoit la taille de mémoire tampon requise, y compris le caractère null de fin.

[out] peUse

Pointeur vers une variable qui reçoit une valeur SID_NAME_USE qui indique le type du compte.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction LookupAccountSid tente de trouver un nom pour le SID spécifié en vérifiant d’abord une liste de SID connus. Si le SID fourni ne correspond pas à un SID connu, la fonction vérifie les comptes locaux intégrés et définis par l’administration. Ensuite, la fonction vérifie le domaine principal. Les identificateurs de sécurité non reconnus par le domaine principal sont vérifiés par rapport aux domaines approuvés qui correspondent à leurs préfixes SID.

Si la fonction ne trouve pas de nom de compte pour le SID, GetLastError retourne ERROR_NONE_MAPPED. Cela peut se produire si un délai d’attente réseau empêche la fonction de trouver le nom. Cela se produit également pour les SID qui n’ont pas de nom de compte correspondant, par exemple un SID d’ouverture de session qui identifie une session d’ouverture de session.

En plus de rechercher des SID pour les comptes locaux, les comptes de domaine locaux et les comptes de domaine explicitement approuvés, LookupAccountSid peut rechercher des SID pour n’importe quel compte dans n’importe quel domaine de la forêt, 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 rechercher un SID, LookupAccountSid interroge le catalogue global de la forêt.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Recherche d’un SID dans un jeton d’accès.

Notes

L’en-tête winbase.h définit LookupAccountSid comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

Vue d’ensemble du contrôle d’accès

Fonctions Access Control de base

EqualPrefixSid

LookupAccountName

SID

SID_NAME_USE