![]()
ACCES PARTIEL A LA BASE DES REGISTRES
Introduction
L'Editeur du Registre
Structure de la base de registre
Accès à la base de registre
Conclusion
Téléchargement
La base de(s) registre(s) est un composant clé du système d'exploitation. En effet, il permet de stocker les paramètres de configuration du système (tels que la couleur des fenêtres, les images des icônes et d'arrière plan, ect), les réferences aux dll, le positionnement des fenêtres et beaucoup d'autres...
Vous comprenez donc rapidement que si tous les paramètres de configurations de Windows sont stockés dans cette base, il vous est facile de modifier par exemple l'image de l'icône Poste De Travail, l'image du bouton Démarrer, les images des écrans de démarrage de Windows, les textes affichés dans certaines boîtes de dialogues.
Il y a bien longtemps avant l'arrivée de Windows 95, ces informations étaient stockées dans le fichier Windows.ini (certaines informations le sont encore pour une compatibilité maximale entre les versions du système d'exploitation). Mais avec la venue de ce nouveau concept, l'organisation est beaucoup plus claire et les informations faciles d'accès.
Mais attention, soyez prudent lorsque vous
travaillez avec le registre système, il est très fragile, un mauvais caractère
à un mauvais endroit peut entraîner le mauvais fonctionnement de Windows et même
empêcher son démarrage. Il en résulte la perte de vos données.
Je vous conseille de sauvegarder de temps en temps cette base. On verra plus loin
comment le faire.
Windows dispose d'un Editeur de Registre qui vous permet de naviguer dans la base de registre. Pour démarrer cet éditeur, Cliquez sur Démarrer/Executer (ou appuyer simultanément sur la touche WINDOWS et la touche R), tapez ensuite Regedit (ou Regedit.exe).

Cet Editeur affiche alors toute l'arborescence de la base, il suffit de cliquer sur
"+" pour développer chaque clé.
Comme je vous l'ai avertis plus haut, afin
d'éviter de tout foutre en l'aire, prenez le temps de sauvegarder la base avant de la
modifier.
Pour cela allez sur le menu "Registre" puis "Exporter un Fichier du
registre", Sélectionnez l'option "Tout" et enregistrer la base sous un
nom.
L'organisation de la base des registres présente six grandes clés (clés primaires):
Je vous épargnerai la signifiacation de ces clés, d'autant plus que je ne les maîtrise pas toutes. Mais c'est pas nécessaire pour les manipuler efficacement.
En développant ces clés, il se forme encore une grande
hiérarchie de sous-clés, il vous est ensuite possible de développer ces sous-clés.
La base est comparable à un ordinateur possédant plusieurs disques durs C:\ , D:\
, E:\ ... Chaque disque est divisée en repertoires , chaque répertoire peut être
divisé en sous-répertoire ou contenir des fichiers. Et enfin chaque fichier contient des
données.
Dans le cas d'une base de registre, Les disques durs representent les CLES
PRIMAIRES, les répertoires et sous-répertoires répresentent les clés et SOUS-CLES, les
fichiers representent les VALEURS, le contenu des fichiers representent les DONNEES.

On a ainsi: Clés, Sous-Clés, Valeurs, Données.

C'est bien beau d'utiliser l'Editeur de Mr. Microsoft, mais dans vos applications il faudra avoir accès à la base de registre via le code. Visual Basic nous offre quatre fonctions permettant de le faire:
La fonction SaveSetting
La fonction SaveSetting permet de stocker une donnée dans le régistre à un emplacement précis. Voici la structure de la fonction:
| SaveSetting (AppName As String, Section As String, Key as String, Setting As String) |
AppName désigne une sous-clé dans la base de registre, dans la zone réservée aux programmes crés avec Visual Basic (HKEY_CURRENT_USER\Software\VB and VBA Program Settings). Si vous mettez par exemple "Mon Application", cette sous-clé sera accessible via "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Mon Application". Je vous conseille d'utiliser à cet endroit la chaîne renvoyée par la propriété App.Title.
Section est une sous-clé de AppName. Exemple "Paramètres", "Options", "Documents Recents"...
Key est une valeur contenue dans Section.
Setting est la donnée que contient la valeur.
Récapitulons un peu tout ça: finalement la
donnée Setting sera accessible dans le registre via "HKEY_CURRENT_USER\Software\VB
and VBA Program Settings\AppName\Section\Key".
Lorsque vous stockez une valeur via cette fonction, si la valeur n'existe pas
encore dans le registre alors elle est crée avec la nouvelle donnée, dans le cas
contraire elle remplace l'ancienne valeur.
Petit Exemple: Stocke deux valeurs dans la zone reservée aux applications vb.
| Private Sub Form_Unload(Cancel As Integer) SaveSetting App.Title, "Paramètres", "Fenêtre X", Form1.Left SaveSetting App.Title, "Paramètres", "Fenêtre Y", Form1.Top End Sub |
La fonction GetSetting
La fonction GetSetting permet de lire la donnée contenue dans une Valeur.
| GetSetting (AppName As String, Section As String, Key as String, [Default]) As String |
Si le chemin vers la valeur n'existe pas, ou si la valeur elle-même n'existe pas, la valeur du paramètre optionnel Default est renvoyée par la fonction.
Petit Exemple: Lit deux valeurs dans la base.
| Private Sub Form_Load() ' La fonction CSng convertit la chaîne de caractères ' en un nombre de type Single Form1.Left = CSng(GetSetting(App.Title, "Paramètres", "Fenêtre X", "0")) Form1.Top = CSng(GetSetting(App.Title, "Paramètres", "Fenêtre Y", "0")) End Sub |
La fonction DeleteSetting
La fonction DeleteSetting supprime soit une valeur, soit une sous-clé de l'application, soit la clé primaire du programme.
| DeleteSetting (AppName As String, [Section], [Key]) |
Si vous spécifiez Section et Key,
DeleteSetting supprime la valeur précisée.
Si vous ne spécifiez pas Key, DeleteSetting se charge de supprimer la sous-clé
spécifiée dans Section.
Si vous ne spécifiez ni Key, ni Section, DeleteSetting supprime la clé
principale/primaire de l'application.
Petit Exemple: Supprime du registre tous les paramètres de l'application (utile pour les programmes de désinstallation).
| Private Sub DeleteAll() 'A la désinstallation du programme DeleteSetting App.Title End Sub |
La fonction GetAllSettings
| GetAllSettings (AppName As String, Section As String) |
Récupère toutes les valeurs (avec leurs données) contenues dans la sous-clé spécifiée par Section et les place dans un tableau à deux dimensions. La valeur revoyée par GetAllSettings est de type variant. Voici la structure du tableau revoyé:
| Tableau (Index1, Index2) As Variant |
La première dimension Index1 désigne un index
de toutes les valeurs contenues dans la clé c-à-d que le premiere valeur a pour index 0,
la deuxième a pour index 1...
La deuxième dimension Index2 peut prendre deux chiffres: 0 et 1. Le chiffre 0
c'est pour que le tableau renvoie le nom de la valeur, le chiffre 1 c'est pour renvoyer la
donnée de la valeur.
La fonction GetAllSettings est utilisée quand le programme stocke une quantité assez importante de valeurs dans une clé, et quand ce-dernier veux tout lire avec une seule instruction.
Ouffff! Petit Exemple: Sélectionne les deux valeurs.
| Private Sub InitApp() Dim AllSet As Variant On Error GoTo ErrHandler AllSet = GetAllSettings(App.Title, "Paramètres") Debug.Print "Attribution de la valeur " & AllSet(0, 0) Form1.Left = AllSet(0, 1) Debug.Print "Attribution de la valeur " & AllSet(1, 0) Form1.Top = AllSet(1, 1) Exit Sub ErrHandler: 'S'il y a aucune valeur dans la clé If AllSet = Empty Then Exit Sub End Sub |
FONCTIONNEMENT
Si votre application n'est pas spécialement programmée pour la gestion de la base
de registre, alors les fonctions fournies par Visual Basic sont tout ce qu'il vous faut
pour stocker et récuperer des données.
TOUJOURS PLUS...
Vous l'avez sûrement remarqué, ces mêmes fonctions de Visual Basic ne permettent pas
d'accéder à toute la base de registre, ces fonctions se contentent de travailler dans
une clé déjà prédéfinie :-(. Vous comprenez rapidement que vous devez avoir recours
aux API pour un accès TOTAL au registre système: c'est l'objet de notre prochain
article.
Pour vous accompagner dans la lecture.
Reg1.zip - Téléchargez le zip qui contient un exemple d'application accédant à la base de registre système.
[Home]
[Actualités]
[Trucs
& Astuces]
[Astuces Windows]
[ActiveX-Ocx/Dll]
[Articles]
[Codes Sources]
[VB
Games]
[Fichiers Sons]
[Fichiers Icônes]
[Programmes & Sources]
[Mailing-List]
[Divers]
[A Propos]