Partager via


RegGetValueW, fonction (winreg.h)

Récupère le type et les données de la valeur de Registre spécifiée.

Syntaxe

LSTATUS RegGetValueW(
  [in]                HKEY    hkey,
  [in, optional]      LPCWSTR lpSubKey,
  [in, optional]      LPCWSTR lpValue,
  [in, optional]      DWORD   dwFlags,
  [out, optional]     LPDWORD pdwType,
  [out, optional]     PVOID   pvData,
  [in, out, optional] LPDWORD pcbData
);

Paramètres

[in] hkey

Handle vers une clé de Registre ouverte. La clé doit avoir été ouverte avec le droit d’accès KEY_QUERY_VALUE. Pour plus d’informations, consultez sécurité des clés de Registre et droits d’accès.

Ce handle est retourné par le RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyExou fonction RegOpenKeyTransacted. Il peut également s’agir de l’une des clés prédéfinies:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_NLSTEXT
HKEY_PERFORMANCE_TEXT
HKEY_USERS

[in, optional] lpSubKey

Chemin d’accès d’une clé de Registre par rapport à la clé spécifiée par le paramètre hkey . La valeur de Registre est récupérée à partir de cette sous-clé.

Le chemin d’accès n’est pas sensible à la casse.

Si ce paramètre est NULL ou une chaîne vide, « », la valeur est lue à partir de la clé spécifiée par clé hkey elle-même.

[in, optional] lpValue

Nom de la valeur de Registre.

Si ce paramètre est NULL ou une chaîne vide, « », la fonction récupère le type et les données de la valeur non nommée ou par défaut de la clé, le cas échéant. Les clés n’ont pas automatiquement de valeur non nommée ou par défaut, et les valeurs non nommées peuvent être de n’importe quel type.

Pour plus d’informations, consultez Limites de taille des éléments de Registre.

[in, optional] dwFlags

Indicateurs qui limitent le type de données de valeur à interroger. Si le type de données de la valeur ne répond pas à ces critères, la fonction échoue. Ce paramètre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
RRF_RT_ANY
0x0000ffff
Aucune restriction de type.
RRF_RT_DWORD
0x00000018
Restreindre le type à un RRF_RT_REG_BINARY 32 bits | RRF_RT_REG_DWORD.
RRF_RT_QWORD
0x00000048
Restreindre le type à un RRF_RT_REG_BINARY 64 bits | RRF_RT_REG_QWORD.
RRF_RT_REG_BINARY
0x00000008
Limitez le type à REG_BINARY.
RRF_RT_REG_DWORD
0x00000010
Limitez le type à REG_DWORD.
RRF_RT_REG_EXPAND_SZ
0x00000004
Limitez le type à REG_EXPAND_SZ.
RRF_RT_REG_MULTI_SZ
0x00000020
Limitez le type à REG_MULTI_SZ.
RRF_RT_REG_NONE
0x00000001
Limitez le type à REG_NONE.
RRF_RT_REG_QWORD
0x00000040
Limitez le type à REG_QWORD.
RRF_RT_REG_SZ
0x00000002
Limitez le type à REG_SZ.
 

Ce paramètre peut également inclure une ou plusieurs des valeurs suivantes.

Valeur Signification
RRF_NOEXPAND
0x10000000
Ne développez pas automatiquement les chaînes d’environnement si la valeur est de type REG_EXPAND_SZ.
RRF_ZEROONFAILURE
0x20000000
Si pvData n’est pas NULL, définissez le contenu de la mémoire tampon sur zéros en cas d’échec.
RRF_SUBKEY_WOW6464KEY
0x00010000
Si lpSubKey n’est pas NULL, ouvrez la sous-clé qui lpSubKey spécifie les droits d’accès KEY_WOW64_64KEY. Pour plus d’informations sur ces droits d’accès, consultez Sécurité des clés de Registre et droits d’accès.

Vous ne pouvez pas spécifier RRF_SUBKEY_WOW6464KEY en combinaison avec RRF_SUBKEY_WOW6432KEY.

RRF_SUBKEY_WOW6432KEY
0x00020000
Si lpSubKey n’est pas NULL, ouvrez la sous-clé qui lpSubKey spécifie les droits d’accès KEY_WOW64_32KEY. Pour plus d’informations sur ces droits d’accès, consultez Sécurité des clés de Registre et droits d’accès.

Vous ne pouvez pas spécifier RRF_SUBKEY_WOW6432KEY en combinaison avec RRF_SUBKEY_WOW6464KEY.

[out, optional] pdwType

Pointeur vers une variable qui reçoit un code indiquant le type de données stockées dans la valeur spécifiée. Pour obtenir la liste des codes de type possibles, consultez Types de valeurs de Registre. Ce paramètre peut être NULL si le type n’est pas obligatoire.

[out, optional] pvData

Pointeur vers une mémoire tampon qui reçoit les données de la valeur. Ce paramètre peut être NULL si les données ne sont pas requises.

Si les données sont une chaîne, la fonction recherche une fin caractère null. Si l’un d’eux n’est pas trouvé, la chaîne est stockée avec une de fin de null si la mémoire tampon est suffisamment grande pour prendre en charge le caractère supplémentaire. Sinon, la fonction échoue et retourne ERROR_MORE_DATA.

[in, out, optional] pcbData

Pointeur vers une variable qui spécifie la taille de la mémoire tampon pointée par le paramètre pvData, en octets. Lorsque la fonction est retournée, cette variable contient la taille des données copiées dans pvData.

Le paramètre peut être pvData n’est NULL.

Si les données ont le REG_SZ, REG_MULTI_SZ ou REG_EXPAND_SZ type, cette taille inclut toute fin caractère ou caractères null. Pour plus d’informations, consultez Remarques.

Si la mémoire tampon spécifiée par paramètre pvData n’est pas suffisamment grande pour contenir les données, la fonction retourne ERROR_MORE_DATA et stocke la taille de mémoire tampon requise dans la variable pointée par wireData. Dans ce cas, le contenu de la mémoire tampon de pvData est zéro si dwFlags spécifie RRF_ZEROONFAILURE et non défini dans le cas contraire.

Si pvData est NULL et que n’est pasNULL, la fonction retourne ERROR_SUCCESS et stocke la taille des données, en octets, dans la variable pointée par wireData. Cela permet à une application de déterminer la meilleure façon d’allouer une mémoire tampon pour les données de la valeur.

Si hKey spécifie HKEY_PERFORMANCE_DATA et que la mémoire tampon pvData n’est pas suffisamment grande pour contenir toutes les données retournées, la fonction retourne ERROR_MORE_DATA et la valeur retournée par le biais du paramètre n’est pas définie. Cela est dû au fait que la taille des données de performances peut passer d’un appel à l’autre. Dans ce cas, vous devez augmenter la taille de la mémoire tampon et appeler RegGetValue à nouveau en passant la taille de mémoire tampon mise à jour dans le paramètre de la mémoire tampon. Répétez cette opération jusqu’à ce que la fonction réussisse. Vous devez conserver une variable distincte pour suivre la taille de la mémoire tampon, car la valeur retournée par n’est pas prévisible.

Valeur de retour

Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.

Si la fonction échoue, la valeur de retour est un code d’erreur système .

Si la mémoire tampon pvData est trop petite pour recevoir la valeur, la fonction retourne ERROR_MORE_DATA.

Si la valeur de Registre lpValue n’existe pas, la fonction retourne ERROR_FILE_NOT_FOUND.

Si dwFlags spécifie une combinaison de RRF_SUBKEY_WOW6464KEY et de RRF_SUBKEY_WOW6432KEY, la fonction retourne ERROR_INVALID_PARAMETER.

Remarques

Une application appelle généralement RegEnumValue pour déterminer les noms de valeurs, puis RegGetValue pour récupérer les données des noms.

Si les données ont la REG_SZ, REG_MULTI_SZ ou REG_EXPAND_SZ type, et que la version ANSI de cette fonction est utilisée (en appelant explicitement RegGetValueA ou en ne définissant pas UNICODE avant d’inclure le fichier Windows.h), cette fonction convertit la chaîne Unicode stockée en chaîne ANSI avant de la copier dans la mémoire tampon pointée par pvData.

Lors de l’appel de cette fonction avec hkey défini sur le handle HKEY_PERFORMANCE_DATA et une chaîne de valeur d’un objet spécifié, la structure de données retournée comporte parfois des objets non demandés. Ne soyez pas surpris ; il s’agit d’un comportement normal. Vous devez toujours vous attendre à parcourir la structure de données retournée pour rechercher l’objet demandé.

Notez que les opérations qui accèdent à certaines clés de Registre sont redirigées. Pour plus d’informations, consultez Registry Virtualization et données d’application 32 bits et 64 bits dans le registre.

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT en tant que 0x0600 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Note

L’en-tête winreg.h définit RegGetValue 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. Le mélange 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista, Windows XP Professional x64 Edition [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2008, Windows Server 2003 avec SP1 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winreg.h (inclure Windows.h)
bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

RegCreateKeyEx

RegEnumKeyEx

RegEnumValue

RegOpenKeyEx

regQueryInfoKey

fonctions de Registre

Vue d’ensemble du Registre