hou$$am Fondateur
Nombre de messages : 386 Localisation : Tlemcen-Algeria Date d'inscription : 04/01/2007
| Sujet: accéder à la base de registre de Windows Mer 17 Jan - 2:38 | |
| Tous les accès à la base de registre sont encapsulés dans une classe : TRegistry. Cette classe est définie dans l'unité Registry, c'est pourquoi il est indispensable d'inclure registry.hpp avant toute manipulation du registre.
- Code:
-
#include <registry.hpp> L'accès à la base de registre se fait en plusieurs étapes.
1. Création d'un objet Registry :
Il faut commencer par initialiser un objet pour manipuler la base de registre : - Code:
-
TRegistry *registre = new TRegistry(); Il est possible de passer au constructeur un long pour initialiser la propriété Access (niveau d'accès à utiliser).
2. Sélection de la clé racine : Avant d'accéder à la clé, il faut en spécifier la clé racine dans le registre. Cela se fait en affectant le nom de la clé racine à la propriété RootKey de l'objet registre précédemment crée. Ce nom de clé est un nom prédéfini, par exemple HKEY_CURRENT_USER (voyez dans Winreg.h pour les constantes disponibles).
- Code:
-
registre->RootKey = HKEY_CLASSES_ROOT; Si par la suite on souhaite accéder à une autre clé racine on doit fermer la clé racine courante puis ouvrir avec la nouvelle clé racine.
3. Fermeture de la clé racine : Avant de terminer les opérations sur la base de registre ou de modifier la propriété RootKey, il est important de valider les modifications apportées par la fermeture la clé en cours. Le type TRegistry possède une méthode qui permet de le faire : CloseKey.
- Code:
-
registre->CloseKey(); Le comportement de cette méthode dépend de la propriété LazyWrite. Il est recommandé de ne pas maintenir les clés ouvertes plus longtemps que nécessaire.
4. Destruction de l'objet Registre et libération des ressources : Afin de libérer la mémoire, il est nécessaire de détruire l'objet créé au début du traitement.
- Code:
-
delete registre; Le destructeur appelle la méthode CloseKey avant de détruire l'objet. La suite d'instructions qui suit est donc redondante :
- Code:
-
registre->CloseKey(); delete regisre; Note : Il est recommandé d'utiliser la gestion d'exception de type try...catch et/ou try...__finally afin de gérer tous les cas d'erreurs et ainsi libérer la mémoire allouée. - Code:
-
TRegistry *registre = new TRegistry(); try { registre->RootKey = HKEY_CLASSES_ROOT; // Traitement... } __finally { delete registre; } | |
|