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
suivent 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 permettent de découvrir tous les avantages et
bénéfices de la base de registre (Plug and Play, stratégies systèmes,
profils utilisateurs, ...).
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 |
![](images/regedit.JPG) |
La base de registre est une méthode de
stockage hiérarchiques (et sécurisée depuis Windows NT 4) de paramètres.
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\SAM, représenté par les fichiers sam et
sam.log
HKLM\SOFTWARE, représenté par software, software.log et
software.sav(créé pendant l'installation)
HKLM\SYSTEM : system, system.log
HKLM\HARDWARE est uniquement chargé en mémoire (Plug and Play)
|
![](images/regist1.gif) |
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és dans chaque
profil utilisateur :
|
![](images/regist2.gif) |
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 entendus cachés par défaut.
La sécurité est appliquée sur certaines clefs, vous
pouvez visualiser celle ci en utilisant le composant Modèle de sécurité
dans la MMC.
Vous trouverez dans cette page la liste des
principales clefs et valeurs de la base de registre.
1. Le plus connu est REGEDIT, Windows XP permet
enfin d'avoir un outil permettant presque de faire 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 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).
D'autre part importer un fichier REG n'efface pas les clefs qui ne s'y
trouvent pas... Consultez le chapitre Sauvegarde.
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.
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\Example /v Flag >nul
goto %ERRORLEVEL%
:1
Echo Installation du logiciel pour la premiere fois.
\\serveur\Office\Setup.exe /settings setup.ini
Reg ADD HKCU\Software\Exemple /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 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://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/installhinfsection.asp
4. Fichiers REG :
Si l'environnement est homogène (Windows XP) 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 |
Non 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.
Voici une sélection d'outils :
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
Il existe aussi des outils spécialisés, dont
ERUNT qui se trouve ici :
http://home.t-online.de/home/lars.hederer/erunt/
Il n'y a plus de limite de taille.
HKU\SID_Classes : permet de stocker des Classes par
user (associations de fichiers par exemple)
Valeur PerceivedType dans HKCU\.ext, permet de
regrouper les fichiers selon leur nature (image, vidéo, ...)
ERUNT pour sauvegarder la
registry :
http://home.t-online.de/home/lars.hederer/erunt/
NTREGOPT pour défragmenter la registry :
http://home.t-online.de/home/lars.hederer/erunt/
RegSnap
: Pour analyser les changements dans la base de registre :
http://www.webdon.com/regsnap/default.asp
RegView : pour visualiser et éditer les
fichiers REG :
http://www.utils32.com/regview.htm
|