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

Introduction

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.

L'Editeur de Registre

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).

reg1.jpg (26570 bytes)

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.

Structure de la base des registres

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.

reg2.jpg (19834 bytes)

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

reg3.jpg (7888 bytes)

Accès à la base des registres via Visual Basic

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)

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

 

Conclusion

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.

Téléchargement

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] lienie.gif (941 octets)[Actualités]  [Trucs & Astuces] [Astuces Windows] [ActiveX-Ocx/Dll] [Articles] [Codes Sources] [VB Games] [Fichiers Sons] [Fichiers Icônes] [Programmes & Sources]  mailing.gif (910 octets)[Mailing-List] smiley.gif (359 octets)[Divers] about.gif (920 octets)[A Propos]