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