Académique Documents
Professionnel Documents
Culture Documents
La base de registre (BDR) 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. En 2009, Microsoft utilise 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, qui peut donc endommager le
système.
Historique
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 qui permet de
l'éditer ou le visualiser. En 1993, avec la première version de NT, elle est étendue et comprend
un ensemble de clés hiérarchiques et de valeurs. La base de registre est enregistrée dans
plusieurs fichiers appelés ruches (hives). 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.).
Sous Windows NT 4, la base de registre servait à la fois pour les utilisateurs locaux et pour
les contrôleurs de domaine. À partir de Windows 2000, les contrôleurs de domaine sont
fondés sur Active Directory et non plus sur la SAM.
Le hachage des mots de passe était fondé initialement sur MD4 (Message Digest), puis dans
les dernières versions, Microsoft est passé à MD5.
À partir de windows 2000 il est activé sur toutes les installations et est configuré pour
enregistrer la clé de démarrage dans le registre[1].
En 2013, l'utilitaire « syskey » est toujours utile dans les dernières versions de
Windows(Windows Server 2012, Windows 8.1, Windows 10) et l'option de l'enregistrement de
la clé de démarrage sur une disquette toujours présente [2]; bien que Windows 10 ne
supporte plus les disquettes.
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.
Utilitaire regedit
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.
D'attribuer des droits spécifiques sur les clés de la base registre; l'interface graphique pour
modifier les droits est semblable à celle qui permet de modifier les droits NTFS.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Fa
vorites
Exemple :
HKEY_CURRENT_USER\Software\Microsoft\regedt32
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.
default
Security
Software
System
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 versions plus récentes de Windows ajoutent des fichiers de
suivi et validation des transactions.
Les emplacements physiques des différentes ruches utilisées lors du dernier démarrage sont
indiqués sous la clé hivelist dans
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\].
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é).
HKEY_LOCAL_MACHINE (HKLM) contient les informations qui sont générales à tous les
utilisateurs de l'ordinateur :
Matériel
Sécurité
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 types de données
possibles,
1) Binaire REG_BINARY, création possible avec REGEDIT
Entier
2) Dword REG_DWORD, 32 bits, création possible avec REGEDIT
3) REG_DWORD_BIG_ENDIAN, voir Endianness
4) REG_DWORD_LITTLE_ENDIAN
7) REG_QWORD_LITTLE_ENDIAN
Chaîne de caractères
8) Chaîne simple REG_SZ, création possible avec REGEDIT
Ressource
12) REG_RESOURCE_LIST
13) REG_RESOURCE_REQUIREMENTS_LIST
14) REG_FULL_RESOURCE_DESCRIPTOR
15) REG_LINK
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).
Programmation
Langage C
Langage C#
Avec le Langage C#, il est possible de lire et modifier la base de registre ; les différentes
méthodes sont
CreateSubKey
OpenSubKey et Close
GetValue et SetValue
Visual Basic
Langage Java
La portabilité du Langage Java fait que l'accès à la base de registre n'est pas directement
implémenté dans Java.
D'une façon générale, pour faire l'interface de Java avec une API native spécifique à un
système d'exploitation, il faut passer par JNI (Java Native Interface).
Dans le cas particulier de la base de registre, il existe par exemple la DLL ICE_JNIRegistry[5].
Certaines bibliothèques n'utilisent pas JNI pour accéder à la base de registre. C'était le cas
de Java Registry Wrapper (sur l'ancien site " Java By Example | Registry, Xxx, Reg").
Minuscule et majuscule
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).
Lors des mises à jour de Windows, la base de registres est automatiquement sauvegardée.
L'utilitaire rstrui.exe permet de voir la liste des sauvegardes ; dans la terminologie Microsoft,
elles sont appelées points de restauration système.
Le service Accès à distance au Registre
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[6] 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.
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 utilise des fichiers indexés, 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.
À l'opposé, Unix utilise de simples fichiers texte pouvant contenir des explications
concernant chaque paramètre; ils sont modifiables avec tout éditeur de texte. Le problème de
donner des droits sur chaque paramètre pour des utilisateurs particuliers sous Unix (ce que
permet la base de registre de Windows puisque toute clé est un objet ayant une ACL) est
abordée différemment; les logiciels accédant à des ressources privilégiées gèrent
généralement ces droits selon une logique qui leur est propre, soit en utilisant l'appartenance
aux groupes d'utilisateurs, soit en spécifiant eux-mêmes des niveaux de droits particuliers[7].
La plupart des paramètres de la base de registre ont un type intrinsèque [réf. nécessaire]. Mais,
certains paramètres sont codés en hexadécimal, ce qui annule l'avantage et rend difficile une
modification. Sous Unix, le paramétrage est fait via un fichier de texte et donc les paramètres
ne possèdent aucun typage intrinsèque (et il est donc possible d'avoir une erreur de
configuration).
L'exploration de la base de registre se révèle dans les faits assez complexe et fastidieuse : il y
a beaucoup de paramètres mais aucun commentaire n'est prévu si ce n'est les noms plus ou
moins parlant des clés. Il est nécessaire de faire appel à une documentation extérieure pour
obtenir une explication. À l'inverse, les fichiers de configuration Unix abondent souvent
d'explications plus ou moins claires, car tous ces fichiers peuvent être commentés. Sous
Unix, la dispersion des fichiers de configuration propres à chaque logiciel rend difficile toute
solution visant à les administrer de façon globale ; en contrepartie, une intervention
malheureuse concernant l'un d'eux n'a généralement pas d'effet sur les autres[8].
En cas de corruption du fichier de base de registre, il est possible de restaurer (si une
stratégie de restauration a été mise en place) l'intégralité des paramètres de base de registre
en une seule fois.
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.
Lors d'un problème bloquant, l'utilisateur peut revenir à la dernière configuration connue.
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 simple. L'habitude est d'utiliser un éditeur qui garde
une copie de sauvegarde des fichiers modifiés, ce qui est le cas général. Les commandes de
base de unix (cp, cmp, ou les outils graphiques) rendent très simple les copies et
comparaisons sur l'ensemble de /etc.
"dconf" est l'équivalent de la base de registre Windows pour les applications fondées sur
GNOME (une des interfaces graphiques open source). Les données sont stockées au format
binaire.
Dans les anciennes versions de linux, c'était GConf qui était utilisé et les données étaient au
format XML.
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.net.
NetInfo de Mac OS X
Sur les anciennes versions de Mac OS X, l'équivalent de la base de registre est la base de
données NetInfo (en).
Utilitaire
. Il est possible aussi d'utilise reg /export et reg /import en ligne de commande.
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, qui n'est
autre qu'un fichier au format ANSI composé de l'entête "Windows Registry Editor Version
5.00". Note : l'utilitaire n'est pas manageable en ligne de commande car aucun code d'erreur
n'est retourné. Il est en natif sur tous les postes.
L'utilitaire REG.EXE permet de faire toutes sortes d'opération sur les clef de la base de
registre, en ligne de commande. Il est donc parfaitement manageable. Il est en natif sur tous
les postes.
Regalyzer est un gratuiciel qui est comparable à REGEDIT : il offre une interface graphique
pour modifier la base de registre.
la recherche avec REGALYZER fournit une liste, alors qu'avec REGEDIT, on est obligé de
balayer chaque élément un par un.
Le logiciel permet aussi dans le tableau résultant d'effectuer des sélections (plusieurs types
de sélections sont possibles) pour exports ou pour suppressions. Il permet aussi d'ouvrir le
logiciel Regedit directement sur la clé sélectionnée. Un onglet "Remplacer" permet aussi de
modifier des clés ou valeurs sélectionnées en utilisant des critères de façon à opérer la
même manipulation en une seule fois sur toutes les clés ou valeurs sélectionnées.
Une fois le tableau des résultats obtenu, le logiciel se présente sous la forme de deux
fenêtres : une fenêtre comportant le tableau des résultats, et une fenêtre se comportant
comme Regedit en présentant l'arborescence complète centrée sur la clé sélectionnée.
Lorsqu'un double-clic est effectué sur une occurrence dans la fenêtre tableau des résultats,
la fenêtre présentant l'arborescence se met à jour pour refléter la nouvelle sélection. Et toutes
les opérations possibles avec Regedit sont alors possibles sur la clé ou la valeur
sélectionnée (modifier des données, créer, renommer ou supprimer des valeurs ou des clés,
etc.)
Il existe aussi des utilitaires pour éliminer les entrées inutilisées de la base de registre. Ces
utilitaires sont appelés nettoyeurs de registre.
regsupreme ;
EasyCleaner de ToniArts ;
NB : Ces utilitaires ne sont pas validés par Microsoft et, tout pertinents qu'ils soient, rien ne
garantit qu'ils ne perturberont pas le fonctionnement du système, comme rien ne prouve leur
efficacité présumée. L'utilisateur reste seul responsable des inconvénients éventuels subis.
Exemple :
Exemple de logiciels :
RegSnap de ShareUp ;
WineXposeRegistry ;
RegShot ;
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.
Autres outils
RegVac
jv16
regrun
Bibliographie
Les trois livres suivants expliquent quelques valeurs de clés utiles à connaître parmi la
multitude de celles qui existent
Voir aussi
Liens externes
Sécurité du registre
Sécurité de la base SAM sur les serveurs Windows 2000 NON contrôleurs de domaine (htt
p://www.labo-microsoft.com/articles/win/secure_sam/) par Michel Pruche.
Notes
1. (en) Quelques clés du registre utilisés par Syskey (https://raw.github.com/cemeyer/chntp
w-hivex/master/syskey.txt) .
2. (en) discussion sur la possibilité de mettre la clé de démarrage dans une clé USB (http://w
ww.wilderssecurity.com/showthread.php?t=343741) .
7. Voir par exemple les logiciels Sudo, Samba, Apache en ce qui concerne l'exécution de
scripts CGI, etc.
8. Cette pratique ancrée de façon culturelle rend les administrateurs de ces environnements
plutôt réfractaires aux tentatives d'implémenter une base de registre pour Unix. Voir par ex.
les discussions sur https://linuxfr.org/news/une-base-de-registre-pour-linux
9. Créer un point de restauration système (http://www.libellules.ch/restauration_system_seve
n.php)
Ce document provient de
« https://fr.wikipedia.org/w/index.php?
title=Base_de_registre&oldid=180478923 ».
Dernière modification il y a 9 mois par Okhjon
Wikipédia