La Base de registre

  • Historique

La base de registre (registry) est née sous Windows 3.1, comme une méthode alternative aux fichiers INI pour stocker les paramètres de Windows et des applications.

Auparavant, les fichiers textes linéaires sous DOS (CONFIG.SYS, …) puis les fichiers INI permettaient de stocker les paramètres des systèmes et applications.

Mais l’apparition d’OLE dans Windows 3.1 à considérablement accru les besoins en stockage et consultation de paramètres (les fichiers INI étaient limités à 64 K).

Windows 95 a été la première version de Windows basée sur la base de registre, et toutes les versions qui lui succèdent utilisent cette même base de registre (les fichiers INI sont toujours présents pour des raisons de compatibilité, hélas toujours utilisés par certains programmes).

Chaque version de Windows apporte son lot de nouveautés et permet de découvrir tous les avantages et bénéfices de la base de registre (Plug and Play, stratégies systèmes, profils utilisateurs, 64bits …).

  • Structure et organisation

La base de registre est divisée en deux parties : HKEY_LOCAL_MACHINE et HKEY_USERS, désignées par la suite HKLM et HKCU.

Les autres branches sont en réalité des liens vers des sous répertoires de ces deux clefs.

HKEY_CLASSES_ROOT (HKCR) : il s’agit de la fusion de HKLM\Software\Classes et HKCU\Software\Classes (priorité à HKCU).

HKEY_CURRENT_USER : il s’agit de HKU\SID de l’utilisateur (voir ici l’explication sur les SID)

HKEY_CURRENT_CONFIG : il s’agit de HKLM\System\CurrentControlSet\Hardware Profiles\Current

image

  • Structure physique

La base de registre est une méthode de stockage hiérarchique de paramètres (et sécurisée depuis Windows NT 4)).

Physiquement ce sont des fichiers, appelés ruches (hives) :

HKLM est stocké dans %SYSTEMROOT%\System32\Config, les fichiers ne possèdent pas d’extension :

HKLM\BCD00000000, représenté par bcd-template
HKLM\HARDWARE est uniquement chargé en mémoire (Plug and Play)
HKLM\SAM, représenté par les fichiers sam et sam.log, contient les informations de comptes et groupes.
HKLM\SECURITY, qui est aussi lié à la SAM.
HKLM\SOFTWARE, représenté par software, software.log et software.sav (créé pendant l’installation)
HKLM\SYSTEM : system, system.log

image

HKU est stocké dans différents endroits :

HKU\.DEFAULT, est stocké dans %SYSTEMROOT%\System32\Config\systemprofile, sous le nom ntuser.dat

Les autres branches sont stockées dans chaque profil utilisateur :

HK

HKU\SID est dans %USERPROFILE%\Ntuser.dat
HKU\SID_Classes est dans %USERPROFILE%\Local Settings\Application Data\Microsoft\Windows\UsrClass.Dat

Ces fichiers sont bien entendu cachés par défaut.

Certaines clefs sont protégées par des droits restreints (ACL), vous pouvez les visualiser en utilisant le composant Modèle de sécurité dans la MMC.

  • Clefs utiles

Vous trouverez dans cette page la liste des principales clefs et valeurs de la base de registre.

  • 32 et 64 bits / WOW64

Lorsqu’un programme 32 bits est exécuté dans un Windows 64 bits, il est géré par un module de Windows nommé WOW64, certaines clefs auxquelles il accède sont soit redirigées, soit reflétées, soit partagées.

La redirection :

Lorsqu’une application 32 bits cherche à écrire dans HKLM\Software, la clef est en fait redirigée (sous Windows 7 et plus) vers HKEY_LOCAL_MACHINE\Software\Wow6432

La réflexion :

Lorsqu’une application 32 bits cherche à écrire dans HKLM\Software, la clef est en fait redirigée (sous Windows 7 et plus) vers HKEY_LOCAL_MACHINE\Software\Wow6432 mais cette valeur est aussi synchronisée (réflexion) dans HKEY_LOCAL_MACHINE\Software\

Le partage :

Les chemins HKLM\Software, et HKEY_LOCAL_MACHINE\Software\Wow6432 sont les mêmes.

La reflexion n’existe que sous Windows Server 2008, Windows Vista, Windows Server 2003, et Windows XP, elle a été remplacée par des clefs partagées.

Liste des clefs partagées, redirigées et partagées : http://msdn.microsoft.com/en-us/library/windows/desktop/aa384253(v=vs.85).aspx

  • UAC et Virtualisation

Une des grandes nouveautés de Windows depuis Windows Vista est UAC, le contrôle de compte utilisateur en Français : en résumé UAC est un ensemble de service dont l’objectif est de sécuriser l’utilisation du PC. Ainsi une application non marquée pour Windows Vista et plus (l’application, pour être marquée, doit s’annoncer au moyen d’un manifest qui décrira les droits nécessaires à son exécution ou installation).

Si une application inconnue essaie d’écrire dans certains dossiers et dans HKLM, alors Windows ne la bloquera pas mais « virtualisera » les accès : au lieu d’écrire dans HKLM\Software, les paramètres seront enregistrés dans HKCU.

  • Outils

Windows PE ou Windows RE sont des environnements de dépannage fournis par Microsoft. Ces environnements contiennent des outils de dépannage du registre, pour dépanner un Windows ne démarrant plus, par exemple.

ATTENTION : Modifier la base de registre n’est pas sans risque, il est conseillé de sauvegarder le registre avant de faire des modifications !!!

1. Le plus connu est REGEDIT, un outil permettant de faire -presque- toutes les opérations sur la base de registre :
_ visualiser les clefs et valeurs
_ exporter les clefs et valeurs :
soit sous la forme de fichier REG (au format NT4 / ANSI ou 2000 / Unicode)
soit sous la forme de ruches (hive en Anglais)
soit sous forme de texte (peu utile en fait, les fichiers REG sont parfaitement lisibles)
_ importer les fichiers pour modifier des clefs et/ou valeurs, le moyen le plus simple étant de double cliquer sur un fichier REG, et si vous voulez éviter le message de confirmation alors faites ceci : regedit /s fichier.reg
_ visualiser ou modifier les droits sur la base de registre.

Pour supprimer une clef, il suffit d’ajouter un « – » devant la clef : exemple : [-HKEY_CURRENT_USER\Software….]

Attention : REGEDIT n’est pas un outil de sauvegarde de la base de registre, en effet certaines clefs sont inaccessibles, même aux administrateurs (HKLM\SAM et HKLM\Security par exemple).

Importer un fichier REG n’efface pas les clefs qui ne se trouvent pas dans le fichier REG, donc ne remet pas à zéro le registre…. Consultez le chapitre Sauvegarde.

Par exemple :

1 – vous sauvegardez la branche HKLM\SOFTWARE\Microsoft dans un fichier REG

2 – vous créez une clef HKLM\SOFTWARE\Microsoft\Office qui n’existait pas

3 – Vous réimportez le REG, en pensant tout remettre les paramètres d’origines : la clef HKLM\SOFTWARE\Microsoft\Office existe toujours !

 

2. REG.EXE :
REG est un outil de ligne de commande qui permet de créer, ajouter, supprimer, copier, sauvegarder, visualiser, comparer, modifier, exporter des clefs ou des branches de la base de registre.
Syntaxe :
REG Opération [liste_paramètres]
Opération : [ QUERY | ADD | DELETE | COPY | SAVE | LOAD | UNLOAD | RESTORE | COMPARE | EXPORT | IMPORT ]
De plus REG.EXE génère un code de retour : (à l’exception de REG COMPARE), 0 – Réussite, 1 – Échec.

Nouveau : REG /FLAGS : permet de consulter ou modifier l’état de virtualisation de la clef.
Exemple :
reg flags hklm\software\microsoft
query HKEY_LOCAL_MACHINE\software\microsoft
REG_KEY_DONT_VIRTUALIZE: CLEAR
REG_KEY_DONT_SILENT_FAIL: CLEAR
REG_KEY_RECURSE_FLAG: CLEAR

Voici un exemple de batch, qui vérifie la présence d’un flag, si celui ci est présent, certaines clefs de la base de registre sont nettoyées (les historiques), sinon le programme est installé et le flag est ajouté à la base de registre.

@Echo Off
Reg QUERY HKCU\Software\Test/v Flag >nul
goto %ERRORLEVEL%
:1
Echo Installation du logiciel pour la premiere fois.
\\serveur\Programme\Setup.exe /settings setup.ini
Reg ADD HKCU\Software\Test /v Flag /t REG_DWORD /d « 1 »
goto CONTINUE
:0
Echo Logiciel deja installe, passage a la suite.
:CONTINUE
Set HKMS=HKCU\Software\Microsoft
Set HKCV=HKCU\Software\Microsoft\Windows\CurrentVersion
REM Efface les historiques
Reg DELETE %HKCV%\Explorer\MenuOrder /f
Reg DELETE %HKCV%\Explorer\RunMRU /f
Reg DELETE %HKCV%\Explorer\RecentDocs /f
Reg DELETE %HKCV%\Explorer\ComDlg32\LastVisitedMRU /f
Reg DELETE « %HKMS%\Search Assistant\ACMru » /f
Reg DELETE « %HKMS%\Internet Explorer\TypedURLs » /f

3. Fichiers .INF :
Voici la méthode la plus puissante de modification de la base de registre. Les fichiers INF (qu’on associe souvent aux pilotes/drivers) permettent de modifier la base de registre (et beaucoup plus encore) de manière puissante, et claire.
Les principales commandes sont AddReg, DelReg, BitReg.
En voici un exemple.

Pour exécuter les fichiers INF automatiquement depuis un batch, il faut lancer la commande suivante : RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C:/WINDOWS/INF/SHELL.INF
Ceci exécutera le paragraphe [Install].
La valeur 132 peut varier suivant les règles suivantes :

128
Le chemin de l’installation est le chemin du fichier INF.

+0
Ne jamais redémarrer le PC.

+1
Toujours redémarrer le PC.

+2
Toujours demander avant de redémarrer le PC.

+3
Redémarre le PC si nécessaire sans demander.

+4
Si un redémarrage est nécessaire, demander avant de redémarrer le PC.

Par exemple :

[Version]
Signature= »$CHICAGO$ »
[DefaultInstall]
DelReg=DelReg
[DelReg]
HKCU, »Software\Microsoft\Windows\CurrentVersion\Ext\Settings\XXXXXX »

Consultez le lien suivant, pour plus de détails : http://technet.microsoft.com/en-us/library/dd346952.aspx

4. Fichiers REG :
Si l’environnement est homogène (à partir de Windows XP / 2003 et Vista) il est souhaitable de faire des fichiers REG Unicode (format par défaut de REGEDIT), l’en tête du fichier est alors : Windows Registry Editor Version 5.00

Pour insérer des caractères spéciaux :

\ : faire \\
saut de ligne : faire \n

 » : faire \ »
retour : faire \r

5. Les stratégies systèmes ou Group Policies (GPO) :

Il s’agit de la méthode la plus puissante car elle permet aux administrateurs de parc de gérer l’ensemble des PC et utilisateurs par le biais de modèles de stratégies, qui modifient des clefs de registre.

6. PowerShell

Pour Powershell le registre est un fournisseur, pour accéder au registre il suffit d’accéder à une clef racine : cd HKCU: ou cd HKLM:

image

  • Sauvegarde

REGEDIT n’est pas un outil de sauvegarde de la base de registre, en effet certaines clefs sont inaccessibles, même aux administrateurs (HKLM\SAM et HKLM\Security par exemple). D’autre part importer un fichier REG n’efface pas les clefs qui ne s’y trouvent pas, regedit fusionne les clefs existantes avec celles que vous importez depuis un fichier REG, ce n’est pas pas suffisant.

Il vous faut donc utiliser un outil de sauvegarde qui comprends le registre.

NTBACKUP: tout simplement, en sélectionnant la registry dans System State.

Les points de restauration contiennent notamment les ruches. Celle ci sont sauvegardées dans un dossier
\Volume Information\_restore{<un ID>}\RPxxx\snapshot
sous les noms suivants :
_REGISTRY_MACHINE_SAM
_REGISTRY_MACHINE_SOFTWARE
_REGISTRY_MACHINE_SYSTEM
_REGISTRY_MACHINE_SECURITY

12 comments to La Base de registre

Leave a Reply

  

  

  

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.