La base de registre est une base de données utilisée par le système d'exploitation Windows. Elle contient les données de configuration du système d'exploitation et des autres logiciels installés désirant s'en servir. Microsoft utilise aujourd'hui plutôt le terme Registre Windows pour parler de cette base de données.
Le plus souvent, les utilisateurs modifient la base de registre de façon transparente, via une interface graphique. Il existe des cas où aucune interface graphique n'est prévue ; il est alors nécessaire d'utiliser l'outil Regedit, mais dans ce cas, il n'y a pas de garde-fou, le logiciel ne vérifie aucun des paramètres modifiés par l'utilisateur...
La base de registre est apparue sur Windows 3.x, mais est alors très restreinte et sert exclusivement à associer un fichier (une extension de fichier) avec l'application et permet de l'éditer ou le visualiser. En 1993, avec la première version de NT, elle est étendue et comprend alors un ensemble de clés hiérarchiques et de valeurs. La sauvegarde physique de la base sous forme de fichiers est alors appelée “ ruche ” (hive) ; une ruche correspond à un fichier. La base de registre a ensuite été reprise dans Windows 95, en 1995. Cette base de données de configuration remplace la plupart des multiples fichiers d'extension .ini de Windows 3.x et de ses prédécesseurs (NB : en 2005, l'exception la plus connue est boot.ini, ...etc.).
L'une des parties les plus importantes de la base de registre sous Windows NT et ses successeurs est la SAM (Security Account Manager). Elle contient notamment les mots de passe ; sous Windows NT, par défaut, les mots de passe n'étaient pas cryptés.
Sous Windows NT 4, la base de registre servait à la fois pour les utilisateurs locaux et pour les contrôleurs de domaine. A partir de Windows 2000, les contrôleurs de domaine sont basés sur Active Directory et non plus sur la SAM.
La sécurité par défaut de la SAM sous Windows NT était particulièrement faible. A partir du pack 3 de Windows NT, l'utilitaire "syskey" de Microsoft permet de renforcer le cryptage des mots de passe.
Le hachage des mots de passe était basé initialement sur MD4 (Message Digest), puis dans les dernières versions, Microsoft est passé à MD5.
En 2005, l'utilitaire "syskey" est toujours utile avec les dernières versions de Windows : Windows Server 2003, Windows XP (32 bits ou Itanium 64 bits)...etc.
Le rdisk.exe de Windows NT 4 permettait de faire une sauvegarde du registre sur une disquette 1.44 Mo (une seule...).
Cet utilitaire n'est plus inclus dans les versions ultérieures de Windows car la taille de la base de registre est devenue supérieure à la taille de la disquette.
Pour sauvegarder la base de registre, il est possible d'utiliser ntbackup.exe de Microsoft (copyright Microsoft et Veritas Software Corporation), en cochant la case "Toutes les informations sur cet ordinateur" ; l'extension de fichier est ".BKF" pour le fichier de sauvegarde. Par défaut, le périphérique de sortie est la disquette (1,44 Mo), ce qui est trop petit ; il faut indiquer un autre périphérique (clé USB de 1 Go ou autre).
Jusqu'à Windows 2000, il y avait 2 utilitaires légèrement différents regedit et regedt32 pour modifier la base de registre. regedit était plus convivial, alors que regedt32 permettait de faire des modifications plus pointues.
Avec Windows XP, Microsoft a unifié les 2 utilitaires : désormais, les 2 commandes appellent le même outil.
L'interface graphique actuelle de regedit de Microsoft permet de :
Version de regedit récente : 5.1 (numéro 2600 : service pack2) pour Windows XP.
Les utilitaires "regmaid" et "scanreg" de Microsoft avaient été créés pour résoudre des problèmes spécifiques. Ils sont a priori devenus obsolètes avec les dernières versions de Windows.
Par défaut, c'est dans le répertoire %SystemRoot%\System32\Config que sont stockés les fichiers de ruche suivants :
Les informations concernant un utilisateur sont stockées dans le répertoire correspondant à la variable d'environnement %UserProfile%. Par exemple, pour un utilisateur dont le login est "dupont", la valeur %UserProfile% sera par défaut "C:\Documents and settings\dupont". Il y a un fichier de ruche NTUSER.DAT par utilisateur.
Le répertoire %SystemRoot%\repair contient une sauvegarde de la base de registre ; elle est utilisée par Windows pour certains cas de figure. De plus, sous Windows XP, la restauration du système les stocke le répertoire \System Volume Information du disque système.
Des fichiers journaux (extension .LOG) et des fichiers de sauvegarde (extension .SAV) sont utilisés en interne par Windows pour pallier des coupures de courant intempestives, ou à toute autre forme d'arrêt brutal.
Les emplacements physiques des différentes ruches utilisées lors du dernier boot sont indiqués sous la clé hivelist de [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\.
Voici un exemple-type du contenu de hivelist :
Les fichiers contenant la base de registre sont User.dat et System.dat ; leur répertoire par défaut est \Windows.
Les fichiers contenant la base de registre sont User.dat, System.dat et Classes.dat ; leur répertoire par défaut est \Windows.
La base de registre est partagée en différentes sections logiques. Elles sont généralement connues par les noms les définissant quand on y accède via l'interface graphique de Windows; les noms commencent tous par 'HKEY' (une abréviation de Handle to a KEY, gestionnaire de clé).
Les 2 HKEY de base sont :
Les 5 autres HKEY sont
Chacune de ces clés est divisée en sous-clé(s), qui peuvent contenir d'autre(s) sous-clé(s) et ainsi de suite, constituant toute une arborescence.
Chaque clé peut contenir des valeurs typées : il existe une quinzaine de type de données possibles,
Un grand nombre de clés et de valeurs de clés sont affichées par regedit sous un format analogue à {3F2504E0-4F89-11D3-9A0C-0305E82C3301}. En fait, il s'agit du format GUID (Globally Unique IDentifier) (16 octets).
winreg.h est l'include nécessaire pour utiliser le registre en Langage C.
Avec le Langage C #, il est possible de lire et modifier la base de registre ; les différentes méthodes sont
JNDI est l'API nécessaire pour utiliser le registre avec le Langage Java.
Contrairement à ce qui est habituel sous Windows, des casses de caractères différentes donnent des résultats différents. Exemple : les valeurs "no" et "No" peuvent donner des résultats très différents.
Le caractère espace (" ") peut être utilisé dans les noms de clés, bien que ce soit rare (exemple : la clé optionnelle Use Search Asst).
Parmi les services Windows, il existe un service "Accès à distance au Registre" (RemoteRegistry). Il permet non seulement de lire, mais aussi de modifier la base de registre à distance. Pour des raisons de sécurité, il est prudent de mettre le paramètre "Mode de démarrage" à la valeur "Désactivé" ; les 2 autres valeurs possibles sont déconseillées : "Manuel" et "Automatique".
Ce service fait partie des services lancés via la commande "svchost.exe -k LocalService" (Processus SerViCe HOST pour le compte correspondant à utilisateur local). Il utilise le service RPC (Remote Procedure Call).
L'utilitaire syskey de Microsoft est recommandé si on veut se protéger contre une personne ayant un accès physique au local où se trouve le PC.
En 2005, cet utilitaire est toujours utile avec les dernières versions de Windows : Windows Server 2003, Windows XP (32 bits ou Itanium 64 bits)...etc. La dernière version utilise MD5 (Message Digest) pour le hachage des mots de passe.
Le contenu de la base de registre sous Windows correspond aux fichiers des répertoires etc d'Unix ou de Linux.
Le système de Windows est plus performant, il utilise des fichiers indexés (dérivés du moteur Jet de Microsoft Access), ce qui permet un accès optimisé aux informations de la base. La structure permet de créer une configuration multi-utilisateur de manière transparente.
A l'opposé, Unix utilise de simples fichiers texte pouvant contenir des explications concernant chaque paramètre. De plus, chaque paramètre est modifiable avec un simple éditeur de texte.
On peut aussi remarquer que les paramètres de la base de registre sont parfois en langage binaire ou hexadécimale, ce qui peut rendre difficile une modification.
En pratique, la base de registre de Windows ressemble à une “ usine à gaz ”, alors que sous Unix, il y a des fichiers de configuration séparés pour chaque logiciel. En cas de corruption du fichier de base de registre, il est plus délicat de restaurer les données, contrairement à Unix où de multiples fichiers forment la configuration des programmes installés.
Lors d'erreurs de paramétrage, le retour en arrière est possible sous Windows : Windows fait automatiquement une sauvegarde de la base de registre, appelée Point de restauration.
rstrui.exe
en mode graphique pour revenir à l'un des points de restauration précédents. Cet utilitaire est présenté par défaut lors du démarrage en " mode sans échec ".Sous Unix (ou Linux), il n'y a pas de sauvegarde automatique des fichiers de configuration. Si l'utilisateur fait une erreur sur un de ses fichiers de configuration, il devra éventuellement passer au niveau d'init minimum, puis, dans tous les cas, il devra corriger le ou les fichiers de configuration avec un éditeur de texte basique.
GConf est l'équivalent de la base de registre pour les applications basées sur GNOME (une des interfaces graphiques open source).
Les données sont stockées au format XML. Les modifications des données sont faites via un démon. Il y a un outil graphique équivalent à regedit.
La licence est GPL.
Le système d'exploitation AIX utilise lui aussi un équivalent de la base de registre, sous le nom de ODM (Object Data Manager).
Le projet Elektra de Avi Alkalay a pour but de centraliser tous les paramètres de configuration sous Linux dans une même structure. C'est l'équivalent de la base de registre sous linux.
Les 2 formats de stockage possibles (le backend) sont XML (même format que pour GConf) ou Berkeley DB. Les modifications des données sont faites directement, sans passer par un démon.
Le projet Elektra est sous licence BSD; il est hébergé par SourceForge.
Sur Mac OS X, l'équivalent de la base de registre est la base de données NetInfo (voir (en) en:NetInfo).
Il permet de créer un point de restauration (l'équivalent d'une sauvegarde) ou de revenir à un point de restauration (l'équivalent d'une restauration). Les points de restauration sont stockés dans un répertoire "System Volume Information".
Dans l'interface graphique de Windows XP, par défaut, il est appelé "Restauration du système" et est rangé parmi les Accessoires/Outils système (Accessories/System tools) et non pas parmi les outils d'administration.
L'utilitaire en ligne de commande REGINI.EXE de Microsoft permet de modifier la base de registre en fonction d'un fichier au format INI (modifiable avec n'importe quel éditeur de texte (Notepad ou autre).
L'utilitaire REGEDIT de Microsoft peut aussi être utilisé en ligne de commande avec l'option "/s"; dans ce cas, le fichier des modifications à effectuer doit être au format .REG.
L'utilitaire RSTRUI.EXE de Microsoft peut aussi être utilisé en ligne de commande. Si on ajoute le paramètre MAKEFIRSTRESTOREPOINT, cet outil permet aussi de créer un point de restauration.
L'utilitaire REGSVR32.EXE permet de déclarer une DLL dans la base de registre.
Regalyzer est un shareware qui est comparable à REGEDIT : il offre une interface graphique pour modifier la base de registre.
Il offre des fonctionnalités supplémentaires, notamment sur la recherche de chaînes de caractères ; exemples :
Attention : par défaut, la recherche est sensible à la casse.
Voir l'article spyware.
Il existe aussi des logiciels pour éliminer les entrées inutilisées de la base de registre :
Le logiciel "regclean" de Microsoft est a priori obsolète, il date de décembre 1997.
Autres exemples de logiciels dans ce domaine
Exemple :
Il peut être utile de journaliser les modifications de la base de registre,
Cela peut servir par exemple pour faciliter la télédistribution de logiciels.
Exemple de logiciels :
Certains émulateurs de Windows permettent de faire des tests sur la base de registre. Exemple d'émulateur :
Par exemple, pour tester un exécutable d'origine douteuse, on le lance sur un émulateur et on peut voir quelle partie de la base de registre a été modifiée. Si l'exécutable s'avère dangereux, il suffit d'arrêter-relancer l'émulateur et tout redevient normal.
Les 2 livres suivants expliquent quelques valeurs de clés utiles à connaître parmi la multitude de celles qui existent