Base de registre
Un article de Wikipédia, l'encyclopédie libre.
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. 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...
[modifier] Historique
[modifier] Des fichiers .ini de Windows 3.x à la base de registre actuelle
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.).
[modifier] De la SAM de NT à Active Directory de Windows 2000
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.
[modifier] L'utilitaire syskey de Microsoft pour sécuriser 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.
[modifier] Le rdisk de NT et sa disparition dans les versions ultérieures
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).
[modifier] 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.
L'interface graphique actuelle de regedit de Microsoft permet de :
- Modifier la base de registre
- 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.
Le paramétrage de cet outil pour un utilisateur est configuré principalement dans
- HKEY-CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\
- HKEY-CURRENT_USER\Software\Microsoft\regedt32
[modifier] Utilitaire regmaid et scanreg de Microsoft
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.
[modifier] Répertoire de la base de registre
[modifier] Sous Windows Server 2003, Windows XP, Windows Server 2000 et NT
Par défaut, c'est dans le répertoire %SystemRoot%\System32\Config que sont stockés les fichiers de ruche suivants :
- SAM (Security Account Manager)
- Security
- Software
- System
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 :
- \\REGISTRY\\MACHINE\\HARDWARE"="
- \\REGISTRY\\MACHINE\\SECURITY"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\SECURITY
- \\REGISTRY\\MACHINE\\SOFTWARE"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\software
- \\REGISTRY\\MACHINE\\SYSTEM"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\system
- \\REGISTRY\\USER\\.DEFAULT"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\default
- \\REGISTRY\\MACHINE\\SAM"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\SAM
- \\REGISTRY\\USER\\S-1-5-20"="\\Device\\HarddiskVolume1\\Documents and Settings\\NetworkService\\NTUSER.DAT
- \\REGISTRY\\USER\\S-1-5-20_Classes"="\\Device\\HarddiskVolume1\\Documents and Settings\\NetworkService\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat
- \\REGISTRY\\USER\\S-1-5-19"="\\Device\\HarddiskVolume1\\Documents and Settings\\LocalService\\NTUSER.DAT
- \\REGISTRY\\USER\\S-1-5-19_Classes"="\\Device\\HarddiskVolume1\\Documents and Settings\\LocalService\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat
- \\REGISTRY\\USER\\S-1-5-21-123456789-1234567890-123456789-500"="\\Device\\HarddiskVolume1\\Documents and Settings\\Administrateur\\ntuser.dat
- \\REGISTRY\\USER\\S-1-5-21-123456789-1234567890-123456789-500_Classes"="\\Device\\HarddiskVolume1\\Documents and Settings\\Administrateur\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat
[modifier] Sous Windows 95 et 98, répertoire de la base de registre
Les fichiers contenant la base de registre sont User.dat et System.dat ; leur répertoire par défaut est \Windows.
[modifier] Sous Windows Me, répertoire de la base de registre
Les fichiers contenant la base de registre sont User.dat, System.dat et Classes.dat ; leur répertoire par défaut est \Windows.
[modifier] Le contenu de la base de registre
[modifier] 2 Hkey de base
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 :
- HKEY_LOCAL_MACHINE (HKLM) contient les informations qui sont générales à tous les utilisateurs de l'ordinateur :
- Matériel
- Sécurité
- SAM (Security Account Manager)
- Logicielle, la sous-branche "Classes" correspond à HKEY_CLASSES_ROOT
- Système, elle contient notamment la sous-branche CurrentControlSet (NB : CurrentControlSet\Control\Class contient des informations sur les classes).
- HKEY_USERS contient les informations spécifiques à chaque utilisateur. La sous-branche correspondant à l'utilisateur courant est l'équivalent de HKEY_CURRENT_USER.
Les 5 autres HKEY sont
- HKEY_CURRENT_CONFIG contient des informations qui sont mises à jour immédiatement, elles sont régénérées après chaque boot.
- HKEY_CLASSES_ROOT (HKCR) contient les informations sur les applications enregistrées ; cela inclut entre autre les associations entre extensions de fichiers et identifiants de classe d'objet OLE, ce qui permet de lancer automatiquement l'exécutable correspondant. Cela correspond à HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Exemple : ".bat" et "XML" sont respectivement associés à "batfile" et "XML script engine".
- HKEY_CURRENT_USER (HKCU) contient les informations concernant l'utilisateur connecté. Ce n'est qu'une sous-branche de HKEY_USERS.
- HKEY_PERFORMANCE_DATA généré dynamiquement (REGEDIT ne l'affiche pas)
- HKEY_DYN_DATA généré dynamiquement (REGEDIT ne l'affiche pas)
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.
[modifier] Typage des valeurs
Chaque clé peut contenir des valeurs typées : il existe une quinzaine de type 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
- 5) QWORD REG_QWORD 64 bits
- 6) REG_QWORD_BIG_ENDIAN
- 7) REG_QWORD_LITTLE_ENDIAN
- 2) dword REG_DWORD , 32 bits, création possible avec REGEDIT
- Chaîne de caractères
- 8) Chaîne simple REG_SZ, création possible avec REGEDIT
- 9) Chaîne extensible REG_EXPAND_SZ, permet d'utiliser des variables d'environnement, création possible avec REGEDIT
- 10) Chaîne multiple REG_MULTI_SZ, création possible avec REGEDIT
- 11) NONE, REG_NONE : signifie donnée non typée !
- Ressource
- 12) REG_RESOURCE_LIST
- 13) REG_RESOURCE_REQUIREMENTS_LIST
- 14) REG_FULL_RESOURCE_DESCRIPTOR
- 15) REG_LINK
[modifier] GUID (et CLSID)
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).
[modifier] Programmation
[modifier] Langage C
winreg.h est l'include nécessaire pour utiliser le registre en Langage C.
[modifier] 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
[modifier] Visual Basic
Les fonctions sont GetSetting[1], SaveSetting.
Il est aussi possible de passer par le WSH (Windows Scripting Host)[2]
[modifier] 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[3] dont les sources proviennent de Sourceforge.
[modifier] 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.
[modifier] Espace dans les noms de clés
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).
[modifier] Remarque sur la sécurité
[modifier] Le service Accès à distance au Registre
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).
[modifier] Syskey de Microsoft pour sécuriser la SAM, en 2005
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.
[modifier] Comparaison avec Unix (et GNU/Linux)
[modifier] Les fichiers de configuration de Windows et d'Unix
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.
[modifier] Comment réparer une erreur de paramétrage sur chacun des 2 systèmes d'exploitation
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 non bloquant, l'utilisateur peut utiliser
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 ». - Lors d'un problème bloquant, l'utilisateur peut revenir à la dernière configuration connue.
- En lançant le CD-ROM d'installation de Windows, on peut accéder à la « console de récupération » de Windows, permettant d'agir en mode console pour les cas désespérés.
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.
[modifier] GConf de l'interface graphique GNOME
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.
[modifier] ODM, le registre pour AIX
Le système d'exploitation AIX utilise lui aussi un équivalent de la base de registre, sous le nom de ODM (Object Data Manager).
[modifier] Le projet Elektra pour une base de registre sous linux
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.
[modifier] NetInfo de Mac OS X
Sur Mac OS X, l'équivalent de la base de registre est la base de données NetInfo (voir (en) en:NetInfo).
[modifier] Utilitaire
[modifier] Utilitaires pour sauvegarder/restaurer la base de registre
- rstrui.exe de Microsoft
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.
- "regedit" de Microsoft permet de faire une sauvegarde/restauration de la base de registre, partielle ou complète.
- via l'interface graphique
- éventuellement, en ligne de commande, avec regedit /e c:\SAVE_REGISTRE.reg
- Il est aussi possible d'utiliser ntbackup.exe de Microsoft (copyright Microsoft et Veritas Software Corporation).
- Le freeware "Erunt" (Emergency Recovery Utility NT). La version la plus récente date du deuxième trimestre 2005. Auteur : Lars Hederer
[modifier] Utilitaires en ligne de commande pour modifier la base de registre
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.
[modifier] Le shareware RegAlyzer : un REGEDIT amélioré
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 :
- la recherche avec REGALYZER fournit une liste, alors qu'avec REGEDIT, on est obligé de balayer chaque élément un par un.
- On peut utiliser des caractères joker : « * » et « ? »
Attention : par défaut, la recherche est sensible à la casse.
[modifier] Utilitaires éliminant les logiciels espions de la base de registre
Voir l'article spyware.
[modifier] Utilitaires pour supprimer les entrées inutilisées de la base de registre
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
- regsupreme
- regcleaner (ne pas confondre avec le regclean de Microsoft)
- EasyCleaner de Toniarte
- CleanMyPC Registry Cleaner
- RegSeeker de Hover Inc.
- Ccleaner
[modifier] Utilitaires pour compacter, optimiser la base de registre
Exemple :
- Registry Defragmenter & Compactor de Acelogix
- freeware ntregopt (NT REGistry OPTimize) Auteur : Lars Hederers
[modifier] Utilitaires pour journaliser les modifications du registre
Il peut être utile de journaliser les modifications de la base de registre,
- soit ponctuellement, après l'installation d'un logiciel,
- soit au fil de l'eau.
Cela peut servir par exemple pour faciliter la télédistribution de logiciels.
Exemple de logiciels :
- RegSnap de ShareUp
- WineXposeRegistry
- Active Registry Monitor
- Advanced Registry Tracer de Elcomsoft
- Regmon (Registry monitor) de sysinternals
[modifier] Émulateur pour la base de registre
Certains émulateurs de Windows permettent de faire des tests sur la base de registre. Exemple d'émulateur :
- WINE sous Linux
- VPC (Virtual PC) de Microsoft
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.
- Voir (en) Registre dans WINE
[modifier] Autres outils
- RegVac
- Advanced Doctor Pro
- jv16
- regrun
- Spy Studio Surveiller l'activité.
- syskey de Microsoft pour sécuriser la SAM (Security Account Manager), voir paragraphes précédents
- Registry Repair Pro
- TuneUp Utilities de TuneUp Software GmbH
[modifier] Bibliographie
Les 2 livres suivants expliquent quelques valeurs de clés utiles à connaître parmi la multitude de celles qui existent
- Le registre de Windows XP, édité en 2004, éditeur Micro Application
- Le registre de Windows XP par Anderruthy (Jean-Noël)
[modifier] Voir aussi
[modifier] Liens externes
[modifier] Description générale du registre
- (fr) leregistre-fr comprendre la base de registre
- (fr) Sauvegarder la base de registre
- (fr) PC-Electronique : La base de registre
- (fr) Présentation de la base de registre
- (fr) Description très complète de la base de registre
[modifier] Sécurité du registre
- (fr) Sécurité de la base SAM sur les serveurs Windows 2000 NON contrôleurs de domaine par Michel Pruche.
- (en) Syskey, article de Microsoft
[modifier] URL pour les utilitaires
- (en) RegSnap
- (en) ARM (Active Registry Monitor)
- (fr) RegAlyzer