Partager via


Fonction SHRegGetValueW (shlwapi.h)

[SHRegGetValue peut être modifié ou indisponible dans les versions ultérieures du système d’exploitation ou du produit. Utilisez RegGetValue à sa place.]

Récupère une valeur de Registre.

Syntaxe

LSTATUS SHRegGetValueW(
  [in]      HKEY    hkey,
  [in]      LPCWSTR pszSubKey,
  [in]      LPCWSTR pszValue,
  [in]      SRRF    srrfFlags,
  [in, out] DWORD   *pdwType,
  [out]     void    *pvData,
  [in, out] DWORD   *pcbData
);

Paramètres

[in] hkey

Type : HKEY

Handle de la clé actuellement ouverte ou de l’une des valeurs prédéfinies suivantes.

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_PERFORMANCE_DATA

HKEY_USERS

[in] pszSubKey

Type : LPCTSTR

Pointeur vers une chaîne terminée par null qui spécifie le chemin d’accès relatif de hkey à la sous-clé à partir de laquelle récupérer la valeur. Ce paramètre peut être NULL ou une chaîne vide, auquel cas les données sont récupérées à partir de l’emplacement hkey .

[in] pszValue

Type : LPCTSTR

Pointeur vers une chaîne terminée par null qui contient le nom de la valeur. Ce paramètre peut être NULL ou une chaîne vide, auquel cas les données sont récupérées à partir de la valeur Par défaut.

[in] srrfFlags

Type : SRRF

Un ou plusieurs des indicateurs SRRF qui limitent les données à récupérer. Au moins une valeur de restriction de type (SRRF_RT) doit être spécifiée.

[in, out] pdwType

Type : LPDWORD

Pointeur vers un DWORD qui reçoit le type de données stockées dans la valeur récupérée. Lorsque vous utilisez des valeurs par défaut, l’entrée pdwType est le type de la valeur par défaut. Pour connaître les valeurs possibles, consultez Types de données du Registre. Si l’indicateur SRRF_NOEXPAND n’est pas défini, REG_EXPAND_SZ types sont automatiquement développés et retournés en tant que REG_SZ. Si les informations de type ne sont pas requises, ce paramètre peut être NULL.

[out] pvData

Type : LPVOID

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 nécessaires. Par exemple, si vous testiez uniquement l’existence d’une valeur, les données de valeur spécifiques seraient superflues.

[in, out] pcbData

Type : LPDWORD

Pointeur vers un DWORD qui, lors de l’entrée, contient la taille de la mémoire tampon de données de destination pvData, en octets. Cette valeur peut être NULL uniquement si pvData a la valeur NULL. À la sortie, pcbData pointe vers l’une de ces valeurs.

pvData Valeur renvoyée pcbData
NULL ERROR_SUCCESS Taille en octets suffisante pour contenir les données du Registre. Notez qu’il n’est pas garanti qu’il s’agit de la taille précise, mais seulement d’une taille suffisante.
Non NULL ERROR_SUCCESS Nombre exact d’octets écrits dans pvData.
Non NULL ERROR_MORE_DATA Taille en octets nécessaire pour contenir l’intégralité des données. Notez qu’il n’est pas garanti qu’il s’agit de la taille précise, mais seulement d’une taille suffisante.

Valeur retournée

Type : LSTATUS

Retourne ERROR_SUCCESS en cas de réussite, ou un code d’erreur différent de zéro défini dans Winerror.h dans le cas contraire. Vous pouvez utiliser la fonction FormatMessage avec l’indicateur FORMAT_MESSAGE_FROM_SYSTEM pour récupérer une description générique de l’erreur.

Remarques

SHRegGetValue fournit la vérification du type de données, la vérification du mode de démarrage, l’expansion automatique des données REG_EXPAND_SZ et l’arrêt null garanti des données REG_SZ, REG_EXPAND_SZ et REG_MULTI_SZ.

La clé identifiée par hkey doit avoir été ouverte avec KEY_QUERY_VALUE accès de sécurité. Si pszSubKey n’a pas la valeur NULL ou une chaîne vide, cette clé doit également pouvoir être ouverte avec KEY_QUERY_VALUE accès de sécurité dans le contexte d’appel actuel.

Si le type des données est REG_SZ, REG_EXPAND_SZ ou REG_MULTI_SZ, toutes les données retournées incluent ou prennent en compte l’arrêt null de la chaîne. Par exemple, si pvData n’a pas la valeur NULL, les données retournées dans cette mémoire tampon se terminent par une valeur Null. Si pcbData n’a pas la valeur NULL, la taille de la mémoire tampon vers laquelle il pointe inclut les octets requis pour contenir le caractère null de fin.

Sauf si l’indicateur SRRF_NOEXPAND est défini, les données de chaîne de type REG_EXPAND_SZ sont automatiquement développées avant d’être retournées. Le type de la chaîne développée est signalé dans pdwType en tant que REG_SZ, le paramètre pcbData pointe vers le nombre d’octets écrits pour la chaîne développée, et la mémoire tampon vers laquelle pointe pvData contient la version développée de la chaîne.

Notes sur les performances

Si pszSubKey n’a pas la valeur NULL ou une chaîne vide, cette clé est ouverte et fermée par cette fonction chaque fois qu’elle est accessible. Si votre application doit récupérer une série de valeurs à partir de la même sous-clé, vous obtiendrez de meilleures performances en ouvrant la clé à l’aide de RegOpenKeyEx avant d’appeler SHRegGetValue. Utilisez la clé retournée dans le paramètre phkResult de RegOpenKeyEx comme paramètre hkey dans cette fonction, avec pszSubKey défini sur NULL.

La possibilité d’un appel supplémentaire au Registre pour lire ou relire les données existe lorsque le type de données est REG_EXPAND_SZ et que l’indicateur SRRF_NOEXPAND n’a pas été défini. Les conditions suivantes entraînent cet appel supplémentaire.

  • pvData a la valeur NULL, pcbData n’est pas NULL. Bien que les données ne soient pas récupérées, le Registre doit être lu pour obtenir la chaîne et cette chaîne développée pour déterminer la taille requise de la mémoire tampon de données.
  • pvData n’est pas NULL, mais est trop petit pour contenir les données. Les données sont réus pour obtenir la chaîne complète, la chaîne est développée et la taille totale requise est déterminée.

Notes

L’en-tête shlwapi.h définit SHRegGetValue en tant qu’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 avec SP2 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shlwapi.h
Bibliothèque Shlwapi.lib
DLL Shlwapi.dll (version 6.0 ou ultérieure)

Voir aussi

RegQueryValueEx