VBplus - www.vbasic.org

Sommaire / Notre équipe / Nouveautés / Bulletins
Apprendre & Progresser / Aider & Etre aidé

 
VBguides

La base des registres

I - Introduction à la base des registres

Introduite avec Windows 95, la base des registres est un des composants clés du système d'exploitation. C'est en effet en son sein que sont regroupées toutes les informations concernant l'environnement matériel, système et logiciel. Les paramètres de configuration, les utilisations des fichiers dll partagées, et bien d'autres choses encore y sont inscrites, et c'est pour cela qu'il ne faut manipuler cette base des registres qu'avec la plus grande prudence !

Quelques précautions simples sont à prendre :

  • toujours faire une copie de sauvegarde de la base des registres avant de la modifier,
  • toujours savoir ce que l'on fait lorsqu'on effectue des modifications

En effet, si la base des registres subit un problème, c'est le système d'exploitation tout entier qui est menacé, et, avec lui, vos données personnelles !
Pas de panique cependant, si vous ne vous aventurez pas dans les zones "dangereuses" et si vous respectez les précautions citées ci-dessus, tout devrait bien se passer.

L'un des côtés fabuleux de la base des registres est qu'elle permet de personnaliser merveilleusement Windows 95. Avec elle, vous pourrez changer le nom et l'icône de la corbeille par exemple, vous pourrez mettre, à la place des icônes des fichiers bitmaps (.bmp), une image réduite du fichier bitmap.... Vous pouvez personnaliser les évènements sonore, et bien d'autres choses encore ! Mais toutes ces manipulations, je le répète, nécessitent une certaine prudence.


II - Utilité de la base des registres pour le programmeur

Du point de vue de la programmation, la base des registres a une autre utilité : remplacer les fichiers d'initialisation (.ini), qui encombraient les systèmes 16 bits. Même si Windows.ini existe encore, pour des raisons de compatibilité, il est fortement conseillé d'utiliser la base des registres pour stocker les paramètres des programmes. Cela est même plus puissant puisque la base des registres assure des systèmes de hiérarchie et de types des données qui pourront vous être très utiles.
La base des registres s'avère donc idéale pour stocker des informations comme la position de la fenêtre de votre programme, les options sélectionnées par défaut, etc.


III - Structure de la base des registres

Pour mieux visualiser la base des registres, il existe un outil fourni avec Windows 95 et Windows NT, appelé Regedit. Pour l'exécuter, faites tout simplement Démarrer / Exécuter, tapez "Regedit", puis cliquez sur OK.
La base des registres est organisée autour de 6 grandes clés :
  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • HKEY_CURRENT_CONFIG
  • HKEY_DYN_DATA

Je vous ferai grâce de la description de chacune de ces clés, d'abord parce que je ne suis pas sûr de pouvoir être exact et précis, et ensuite car cela n'est pas indispensable pour le "programmeur moyen" !

Ces six clés ne sont en fait que les points de départ de la base des registres. En les développant (cliquez sur le "+" à côté), on découvre une véritable hiérarchie de sous-clés, elles aussi classées relativement méthodiquement.
En fait, on pourrait comparer la base des registres à votre disque dur : les clés principales serait les lecteurs (c:\ , d:\ , e:\....), les sous-clés seraient des répertoires et sous-répertoires. Quant aux fichiers du disque dur, ils correspondent aux "valeurs" dans la base des registres. Le nom du fichier correspond donc au nom de la valeur, et le contenu du fichier aux "données" de la valeur. Cela parait compliqué sur le papier, mais allez voir dans Regedit, et vous verrez combien c'est finalement simple !
Les quatre termes à retenir sont donc Clé, Sous-clé, Données et Valeurs.


IV - Accès à la base des registres avec Visual Basic

Visual Basic intègre quatre fonctions permettant un accès très simple à la base des registres :
  • SaveSetting (arguments : appname, section, key, value)
    SaveSetting vous permet de stocker une information dans la base des registres, dans la zone réservée aux programmes crées avec Visual Basic (HKEY_CURRENT_USER\Software\VB and VBA Program Settings)
    Il vous faut d'abord donner le nom de l'application, c'est à dire la sous-clé de "VB and VBA Program Settings" dédiée à votre programme (je mets App.Title). Vous indiquez ensuite la section, c'est à dire la sous-clé de votre "zone" où sera inscrite la valeur (par exemple : "Paramètres", "Options\Paramètres"....), puis vous mettez le nom de la valeur, et enfin, la donnée correspondant à cette valeur.
    Si la sous-clé ou la valeur précisée n'existe pas quand vous utilisée cette fonction, elle sera crée.
  • GetSetting (arguments : appname, section, key[, default] )
    GetSetting vous permet de récupérer la donnée correspondant à une valeur. Comme pour SaveSetting, il faut d'abord indiquer le nom de l'application, puis la section, puis la valeur à lire. Vous pouvez aussi indiquer la donnée retournée par défaut dans le cas où la valeur en question n'existerait pas.

Exemple d'utilisation de SaveSetting et GetSetting :
Objectif : stocker la position de Form1 sur l'écran, et la restituer au même endroit à l'ouverture du programme

Private Sub Form_Unload(Cancel As Integer)

SaveSetting App.Title, "Paramètres", "Position fenêtre X", Form1.Left
SaveSetting App.Title, "Paramètres", "Position fenêtre Y", Form1.Top

End Sub


Private Sub Form_Load()

Form1.Left = GetSetting(App.Title, "Paramètres", "Position fenêtre X", "0")
Form1.Top = GetSetting(App.Title, "Paramètres", "Position fenêtre Y", "0")

End Sub

  • DeleteSetting (arguments : appname, section[, key] )
    DeleteSetting vous permet d'effacer des clés, sous-clés ou valeurs de la base des registres. Comme toujours, vous indiquez le nom de l'application, puis la secion à supprimer (si vous voulez supprimer toute la clé de votre application, indiquez ""). Vous pouvez préciser la valeur précise à effacer si vous voulez n'en effacer qu'une. Toutes les sous-clés et "sous-valeurs" seront supprimées.
    Attention : j'ai cru remarquer qu'en utilisant DeleteSetting sous Windows NT, il se produit une erreur s'il existe des sous-clés à supprimer. Ce bogue reste à confirmer.
  • GetAllSettings (arguments : appname, section)
    GetAllSettings vous renvoie la liste des valeurs et de leurs données situées dans une clé précise. Il vous suffit d'indiquer le nom de l'application et la sous-clé à partir de laquelle on souhaite répertorier les valeurs.
    La valeur renvoyée est une variable de type Variant contenant un tableau de chaînes à deux dimensions où sont stockées les clés de la section indiquée et leur valeur.

 

Ces fonctions de Visual Basic sont pratiques à utiliser, mais elles présentent une importante limitation : elles ne permettent d'accéder qu'à une petite partie de la base des registres. Si vous désirez pouvoir accéder à la base tout entière (avec les précautions qui s'imposent, bien entendu), il faut faire appel à des API spécialisées là-dedans. Ce ne sont ni des API extrêmement difficiles à utiliser, ni des API très simples. Je ne détaillerai pas ici leur utilisation, mais je vous propose deux approches :
- le code source "RegApi", qui illustre certaines de ces API
- consulter sur le "Groupe des Utilisateurs Francophones de Visual Basic", la page des trucs et astuces dédiée à l'accès à la base des registres. Elle est très bien faite, et regroupe l'ensemble des API sur ce sujet : http://194.98.128.10/vb/TIPS/tips0001.htm

 

Contacter le webmaster
Copyright © 1999 VBplus  -  Tous Droits Réservés  -  Reproduction Interdite

 Digiweb France - Web Presence Provider