RegCreateKeyExA, fonction (winreg.h)
Crée la clé de Registre spécifiée. Si la clé existe déjà, la fonction l’ouvre. Notez que les noms de clés ne respectent pas la casse.
Pour effectuer des opérations de Registre transactionnelles sur une clé, appelez la fonction RegCreateKeyTransacted.
Les applications qui sauvegardent ou restaurent l’état du système, y compris les fichiers système et les ruches de Registre, doivent utiliser le service de cliché instantané de volume au lieu des fonctions de Registre.
Syntaxe
LSTATUS RegCreateKeyExA(
[in] HKEY hKey,
[in] LPCSTR lpSubKey,
DWORD Reserved,
[in, optional] LPSTR lpClass,
[in] DWORD dwOptions,
[in] REGSAM samDesired,
[in, optional] const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
[out] PHKEY phkResult,
[out, optional] LPDWORD lpdwDisposition
);
Paramètres
[in] hKey
Handle vers une clé de Registre ouverte. Le processus appelant doit avoir KEY_CREATE_SUB_KEY accès à la clé. Pour plus d’informations, consultez sécurité des clés de Registre et droits d’accès.
L’accès à la création de clé est vérifié par rapport au descripteur de sécurité de la clé de Registre, et non au masque d’accès spécifié lors de l’obtention du handle. Par conséquent, même si
Ce handle est retourné par la fonction RegCreateKeyEx
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
[in] lpSubKey
Nom d’une sous-clé que cette fonction ouvre ou crée. La sous-clé spécifiée doit être une sous-clé de la clé identifiée par le paramètre hKey
Si lpSubKey est un pointeur vers une chaîne vide, phkResult reçoit un nouveau handle vers la clé spécifiée par hKey .
Ce paramètre ne peut pas être NULL.
Reserved
Ce paramètre est réservé et doit être égal à zéro.
[in, optional] lpClass
Type de classe défini par l’utilisateur de cette clé. Ce paramètre peut être ignoré. Ce paramètre peut être NULL.
[in] dwOptions
Ce paramètre peut être l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
Si cet indicateur est défini, la fonction ignore le paramètre samDesired |
|
Remarque Liens symboliques du Registre ne doivent être utilisés que pour la compatibilité des applications lorsque absolument nécessaire.
|
|
Cette clé n’est pas volatile ; il s’agit de la valeur par défaut. Les informations sont stockées dans un fichier et sont conservées lorsque le système est redémarré. La fonction RegSaveKey enregistre les clés qui ne sont pas volatiles. |
|
Toutes les clés créées par la fonction sont volatiles. Les informations sont stockées en mémoire et ne sont pas conservées lorsque la ruche de Registre correspondante est déchargée. Pour HKEY_LOCAL_MACHINE, cela se produit uniquement lorsque le système lance un arrêt complet. Pour les clés de Registre chargées par la fonction RegLoadKey, cela se produit lorsque le RegUnLoadKey correspondant est effectué. La fonction RegSaveKey n’enregistre pas les clés volatiles. Cet indicateur est ignoré pour les clés qui existent déjà.
Remarque Sur un arrêt sélectionné par l’utilisateur, un arrêt de démarrage rapide est le comportement par défaut pour le système.
|
[in] samDesired
Masque qui spécifie les droits d’accès de la clé à créer. Pour plus d’informations, consultez sécurité des clés de Registre et droits d’accès.
[in, optional] lpSecurityAttributes
Pointeur vers une structure SECURITY_ATTRIBUTES qui détermine si le handle retourné peut être hérité par les processus enfants. Si lpSecurityAttributes est NULL, le handle ne peut pas être hérité.
Le lpSecurityDescriptor membre de la structure spécifie un descripteur de sécurité pour la nouvelle clé. Si lpSecurityAttributes est NULL, la clé obtient un descripteur de sécurité par défaut. Les listes de contrôle d’accès dans un descripteur de sécurité par défaut pour une clé sont héritées de sa clé parente directe.
[out] phkResult
Pointeur vers une variable qui reçoit un handle vers la clé ouverte ou créée. Si la clé n’est pas l’une des clés de Registre prédéfinies, appelez la fonction RegCloseKey une fois que vous avez terminé d’utiliser le handle.
[out, optional] lpdwDisposition
Pointeur vers une variable qui reçoit l’une des valeurs de destruction suivantes.
Valeur | Signification |
---|---|
|
La clé n’existe pas et a été créée. |
|
La clé existait et était simplement ouverte sans être modifiée. |
Si lpdwDisposition est NULL, aucune information de destruction n’est retournée.
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 différent de zéro défini dans Winerror.h. Vous pouvez utiliser la fonction FormatMessage
Remarques
La clé que la fonction RegCreateKeyEx crée n’a aucune valeur. Une application peut utiliser la fonction RegSetValueEx pour définir des valeurs de clé.
La fonction RegCreateKeyEx crée toutes les clés manquantes dans le chemin spécifié. Une application peut tirer parti de ce comportement pour créer plusieurs clés à la fois. Par exemple, une application peut créer quatre niveaux de sous-clé en même temps que les trois sous-clés précédentes en spécifiant une chaîne du formulaire suivant pour le paramètre lpSubKey :
subkey1\subkey2\subkey3\subkey4
Notez que ce comportement entraîne la création de clés indésirables si une clé existante dans le chemin d’accès est orthographié de manière incorrecte.
Une application ne peut pas créer une clé qui est un enfant direct de HKEY_USERS ou de HKEY_LOCAL_MACHINE. Une application peut créer des sous-clés dans des niveaux inférieurs des arborescences HKEY_USERS ou HKEY_LOCAL_MACHINE.
Si votre service ou votre application emprunte l’identité de différents utilisateurs, n’utilisez pas cette fonction avec HKEY_CURRENT_USER. Au lieu de cela, appelez la fonction RegOpenCurrentUser.
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.
Note
L’en-tête winreg.h définit RegCreateKeyEx 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 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winreg.h (inclure Windows.h) |
bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |