ET D’APPLICATION
DES TRANSMISSIONS
division management
La base de registre
COURS SYSTEME
Edition 2001
ESAT/DMSI La base de registre sous Windows NT 4.0
MS-DOS®, le logo Microsoft, Microsoft® Windows 95, Microsoft® Windows 98, Microsoft Windows NT®
et Microsoft® Windows 2000 sont des marques déposées de la société Microsoft.
Tous les noms de produits ou de marques cités dans ce document sont des marques déposées de
leurs propriétaires respectifs.
Bibliographie :
- 2 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
- 3 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
4. Annexes..................................................................................................................28
4.1. Les types de données.......................................................................................................28
REG_DWORD.......................................................................................................................28
REG_SZ................................................................................................................................28
REG_MULTI_SZ...................................................................................................................28
REG_EXPAND_SZ...............................................................................................................28
REG_BINARY.......................................................................................................................29
REG_LINK.............................................................................................................................29
REG_NONE..........................................................................................................................29
REG_DWORD_BIG_ENDIAN...............................................................................................29
REG_FULL_RESSOURCE_DESCRIPTOR..........................................................................29
REG_RESSOURCE_LIST....................................................................................................30
REG_RESSOURCE_REQUIREMENT_LIST........................................................................30
4.2. Outils du Kit de Ressources Techniques........................................................................31
Reg.exe : un véritable couteau suisse...................................................................................32
Consulter des clés.........................................................................................................32
Ajouter des clés.............................................................................................................32
Modifier des clés............................................................................................................33
Supprimer une clé..........................................................................................................33
Copier des clés, des valeurs..........................................................................................33
Enregistrer et restaurer des clés....................................................................................34
Décharger et charger une ruche....................................................................................34
4.3. Fonctions de manipulation de la base de registres issues de l’API WIN32.................35
4.4. Quelques sous-clés...........................................................................................................37
ICONES, MENUS..................................................................................................................37
PARAMETRES......................................................................................................................37
MODIFICATIONS, RESTRICTIONS.....................................................................................38
4.5. Résumé en quelques tableaux.........................................................................................39
- 4 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
A l’époque de Windows 3.0, des fichiers d’informations étaient disponibles dans ce but pour
toutes les applications sous la forme de fichier *.INI . Dans les fichiers systèmes WIN.INI,
SYSTEM.INI, PROTOCOL.INI et CONTROL.INI, on trouvait l’ensemble des ressources utilisées et
disponibles, comme les pilotes de périphériques, les polices de caractères installées etc. Ainsi, lors de
l’installation d’un logiciel, ces fichiers étaient consultés par les applications qui créaient, à partir de là,
leurs propres fichiers d’initialisation. On avait, de ce fait, des fichiers de renseignements (ou
d’initialisation : .INI) un peu partout sur le disque.
• le dialogue inter - applications était difficile voire impossible, car on ne pouvait pas savoir si une
application était installée et si elle l’était, quels étaient ses paramètres ;
• quand un élément était supprimé de l’ordinateur, une application se basant sur son fichier
personnel d’initialisation ne détectait pas cette suppression et pouvait générer une erreur ou
bloquer tout simplement (exemple : suppression d’une police de caractères) ;
• la taille maximale pour ces fichiers était insuffisante : seulement 64ko pour l’ensemble des
données.
• si deux champs possédaient le même nom à l’intérieur du fichier, seule la première occurrence
était prise en compte. Les programmes voulant écrire dans les fichiers WIN.INI ou SYSTEM.INI
devaient donc s’assurer que leur nom de variable n’était pas utilisé.
C’est donc avec Windows 3.1 qu’apparut le premier registre (REG.DAT) fonctionnant sur les principes
suivants :
• D’une part, centraliser et organiser de façon hiérarchique l’ensemble des renseignements aussi
bien matériels que logiciels permettait un dialogue plus simple entre les différents composants
logiciels présents.
• D’autre part, l’idée fût abandonnée de représenter les informations sous la forme de simple
fichiers texte. N’importe quel applicatif ou utilisateur pouvant modifier les fichiers *.INI, il y avait un
manque cruel de sécurité.
La structure de données pour la base de registres de Windows a beaucoup évolué entre les
différentes versions de Windows. De Windows 3.1 qui comportait une seule clé racine, on est passé à
6 clés racines pour Windows NT 4.0. La structure de la base de registres de Windows NT 4.0 est
développée dans la partie 2.2 de ce document.
Aujourd’hui, sous Windows NT, la base de registres est un outil d’administration performant.
Quand les droits adéquats ont été attribués, son accès à partir du réseau permet la configuration à
distance d’un ordinateur.
- 5 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Le registre est comparable à un système de fichiers ou une base de données, car l’un et l’autre
ont une organisation similaire. Leur structure hiérarchique est bien définie et ils prennent tous deux en
charge le concept d’imbrication d’objets.
Les fichiers sont identifiés par des noms et des chemins d’accès, comme le sont les clés à
l’aide de leur chemin d’accès dans le registre. Ainsi, si le registre est partagé, on peut y accéder à
distance en incluant le nom de la machine dans le chemin d’accès.
Le partage du registre est comparable à un partage de répertoires ou de ressources.
Les données d’un fichier sont enregistrées dans un format interprétable par une ou plusieurs
applications. Il en va de même pour les clés de registre dont les valeurs sont compréhensibles par des
applications, des services du noyau et des clients du registre.
Clés racines
Les clés racines sont comparables à des volumes de disque, car elles résident à la base de
l’arborescence hiérarchique et ne dépendent d’aucun autre composant. Les six clés racines qui
constituent le registre NT sont indépendantes les unes des autres une fois chargées. Elles
s’appellent :
Clé Abrégé
HKEY_CLASSES_ROOT HKCR
HKEY_CURRENT_USER HKCC
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_CURRENT_CONFIG HKCC
HKEY_DYN_DATA HKDD
Le schéma qui suit représente une organisation de principe reprenant les différentes variantes
possibles ainsi que les constituants.
- 6 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
O r g a n is a t i o n d e p r i n c i p e e t c o n s t i t u a n t s
P o s t e d e t r a v a il
C lé R a c i n e C l é R a c i n e C l é r a c i n e
R U C H E S o u s c lé C o n t e n u d y n a m i q u e
S o u s c lé T y p e , v a le u r , n o m
T y p e , v a le u r , n o m
T y p e , v a le u r , n o m
T y p e , v a le u r , n o m
T y p e , v a le u r , n o m
S o u s c lé
R U C H E
R U C H E T y p e , v a le u r , n o m
R u c h e = f i c h i e r s u T r y l ep e d , i sv qa ul e e u r , n o m
T y p e , v a le u r , n o m
S o u s c lé
S o u s c lé
Sous-clés
De même qu’un dossier peut contenir un ou plusieurs dossiers, une clé peut contenir une ou plusieurs
sous-clés et ainsi de suite.
Nota : les clés racines ont toutes des sous-clés mais pas de clé parente, puisqu’elles sont situées à la
base de la hiérarchie.
Valeurs
• Un nom, servant d’identificateur pour NT et l’utilisateur. Comme pour les fichiers, il est impossible
que deux valeurs situées au même endroit (même clé parente) puissent porter le même nom. En
revanche, le même nom peut être utilisé dans des clés différentes. Elles sont dans ce cas
différenciées par leur chemin.
Exemple:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ClipArt Gallery \ 2.0 \ Import \
Office97 Clipart contient une valeur nommée CAG et une autre nommée VOLUMENAME.
Dans la clé HKEY …. \2.0\Import\Office97 Multimedia Clipart, on trouve aussi une valeur
nommée CAG et une VOLUME NAME mais le contenu est différent. On ne pourra pas
dupliquer la valeur CAG de la première clé pour la mettre dans la deuxième.
- 7 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
• Un contenu assujetti aux règles et aux restrictions imposées par le type de donnée de la valeur.
Sa taille doit être inférieure à 64 ko. En pratique, les clés sont généralement de l’ordre de
quelques dizaines d’octets.
Remarques
Remarque 1 :
Une clé peut aussi contenir une ou plusieurs valeurs. Le fait de contenir une ou plusieurs
valeurs n’empêche pas la présence de sous-clé.
Remarque 2 :
Il peut exister une valeur dans une clé sans nom. Elle est identifiée par (Défaut) ou <no name> par
les outils d’édition du registre (regedit.exe ou regedt32.exe) et peut donc être exploitable.
Ruches
Une ruche correspond à une sauvegarde d’une partie du registre (une clé et toute son
arborescence) sous forme de fichier sur le disque dur.
- 8 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Ci-dessus, la sous-clé du registre donne l’emplacement des fichiers des ruches sur le disque.
Ci-dessous, les fichiers des ruches sont situés dans \WINNT\system32\config.
- 9 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Liaisons
Il existe dans la base de registres l’équivalent du raccourci : la liaison. Une liaison fournit des
chemins et des noms directs vers des sous-clés. Comme pour un raccourci, l’ouverture d’une
« liaison » ouvre en réalité une autre branche de l’arborescence du registre.
Par exemple, la clé racine HKEY_CURRENT_USER est une liaison vers une sous clé de
HKEY_USERS (la sous-clé de HKU répondant à l’identificateur de sécurité, SID, de l’utilisateur actif).
En outre, les liaisons peuvent être définies dynamiquement, il est aisé de créer une liaison dont
la destination varie en fonction de paramètres conditionnels.
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HARDWARE
SAM
SECURITY
SAM
SOFTWARE
\Classes\
SYSTEM
\CurrentControlSet\HarwareProfiles\Current\
HKEY_USERS
.DEFAULT
SID Utilisateur Actif
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
- 10 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
HKEY_LOCAL_MACHINE
HKEY_USERS
Le SID est attribué une fois pour toute à un objet, même si celui-ci est renommé, ce qui permet
au système d’assurer le suivi et le bon fonctionnement des profils de comptes.
Les paramètres de sécurité associés au compte local créé sont enregistrés dans des sous-clés
de HKU lors de la première ouverture de session interactive de leur propriétaire (la clé est montée sur
la machine). Par contre, lors d’une connexion réseau à distance à travers un partage il y a ouverture
de session d’un utilisateur, mais, dans ce cas, la clé n’est pas montée (importée sur la machine
locale).
HKEY_DYN_DATA
La clé HKDD correspond à un ensemble de données dynamiques recréées à chaque
démarrage du système d’exploitation. Dans NT 4.0, elle contient uniquement des données de
performance. Aucune information contenue dans cette clé n’est écrite sur disque. En fait, chaque fois
qu’un programme (par exemple, l’analyseur de performances) a besoin d’une valeur dans l’une des
sous-clés de HKDD, le noyau de NT collecte les données dynamiques appropriées, crée une sous-clé
temporaire dans HKDD, puis les transmet par ce biais au demandeur. Les données n’existent pas
avant la requête et ne sont même pas conservées en mémoire.
- 11 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
HKEY_CURRENT_USER
Remarque : les directives Microsoft sont, pour les applications, de copier leurs paramètres de
fonctionnement dans HKLM et les paramètres utilisateurs dans HKCU. En d’autres termes, les
paramètres publics des utilisateurs d’une machine (ex : le chemin d’installation d’une application)
résident dans une clé locale alors que les paramètres privés, modifiables par les utilisateurs, sont
stockés ailleurs. Lors du chargement d’un profil, le système copie les données utilisateur dans HKU,
ces données sont alors présentes dans HKCU.
HKEY_CLASSES_ROOT
Le fonctionnement de HKCR repose sur deux sous-clé associées à chaque type de fichier
répertorié : une sous-clé ‘extension’ et une sous-clé ‘application’. Les extensions de fichier sont
enregistrées sous leur nom. A ce niveau, on retrouve le nom de l’application associée sous forme
générique (txtfile, word.document.6, wordpad.document.1, …). Ensuite, au niveau du générique de
l’application, on retrouve la véritable association.
Exemples :
• Extension .txt : la sous-clé .txt présente une valeur par défaut txtfile. La sous
clé txtfile assure l’association par sa sous-clé shell \ open \ command où figure la
référence à notepad.exe.
• Extension .doc (on suppose installé le pack office 97) : la sous-clé .doc
présente une valeur par défaut Word.Document.8. La sous-clé Word.Document.8 assure
l’association par sa sous-clé shell \ open \ command avec winword.exe.
HKEY_CURRENT_CONFIG
- 12 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
HKLM compte cinq sous-clés importantes. Chacune d’elle, sauf HARDWARE, correspond à
une ruche (4 ruches : sam, security, software, system).
HARDWARE
Les sous-clés de HKLM\HARDWARE sont générées lors du démarrage de NT. Elles n’existent
qu’en mémoire vive. Cette clé dispose de quatre sous-clés principales. Les interactions avec ces clés
sont assez limitées, puisque les valeurs ne sont pas modifiables. Pour les inspecter une à une, on
peut utiliser le programme de diagnostic de Windows NT (WINMSD .EXE)
DESCRIPTION
Cette sous-clé est utilisée lors de la détection des périphériques. La procédure de démarrage
de Windows NT lui adjoint une entrée chaque fois qu’un périphérique est identifié.
Remarque : cette clé reconnaît les ports et non les périphériques qui y sont connectés.
DEVICEMAP
Cette sous-clé associe la liste des périphériques de l’ordinateur aux pilotes disponibles. Chaque
pilote est lancé et tente de prendre le contrôle du périphérique qui lui est associé. En cas de réussite,
il s’approprie le périphérique dans DEVICEMAP.
OWNERMAP
Cette sous-clé associe les périphériques de bus aux bus de l’ordinateur. La plupart des
machines acceptent plusieurs bus : des contrôleurs PCI, ISA, EISA et VLB peuvent coexister sur un
même PC. OWNERMAP enregistre les liens entre les cartes et les bus.
RESOURCEMAP
Cette sous-clé fournit la liste des ressources disponibles : IRQ, ports DMA et emplacements
des contrôleurs de bus gérés par la couche HAL (hardware abstraction layer). Les pilotes y puisent les
informations dont ils ont besoin pour se réserver des ressources.
SAM
Cette sous-clé est une liaison vers SECURITY \ SAM visant à faciliter les nombreux accès aux
paramètres de sécurité.
- 13 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
SECURITY
La sous-clé SECURITY comporte deux groupes importants de données. Tout d’abord, elle
contient la base SAM (base ou copie locale) dans HKLM\SECURITY\SAM. Cette partie constitue la
base de contrôle d’accès de NT : liste de contrôle d’accès de chaque objet, liste de groupes et
comptes locaux et de domaine et permissions associées. Ses données ne sont accessibles que par
les services du noyau NT.
Le deuxième groupe de données, dans la sous-clé SECURITY, contient l’ensemble des
données des stratégies utilisateurs et des stratégies de groupe. Là encore, la modification directe
n’est pas possible, même sous le compte administrateur. Pour les modifier, on dispose de l’éditeur de
stratégie système.
SOFTWARE
Les applications et les composants systèmes stockent leurs paramètres de fonctionnement
dans les sous-clés de SOFTWARE. Par convention, cette dernière est suivie des noms du
constructeur et du programme, puis des paramètres de configuration.
Cela donne par exemple pour Internet Explorer 4 de Microsoft : HKLM \ SOFTWARE \
Microsoft \ IE4.
SYSTEM
La sous-clé SYSTEM est un ensemble de données critiques. Elle contient quatre sous-clés
principales :
DISK
Cette sous-clé contient l’ensemble des données utilisées par l’administrateur de disques de NT.
Il y a donc, les affectations identificateur / lecteur, les miroirs, les agrégats…
Select
Cette sous-clé permet de mémoriser les configurations de l’ordinateur, la dernière bonne
configuration (LKG : last known good) et la dernière configuration ayant empêché le démarrage de
Windows NT.
Setup
Cette sous-clé permet de savoir si l’installation de Windows NT a été complètement terminée.
Le chargeur de Windows NT (Ntldr) est capable de déterminer si l’installation du système était en
cours lors du dernier démarrage. Dans ce cas, il relance la procédure (‘system setup in progress’).
ControlSet
Différentes clés de ControlSet peuvent exister. Pour chaque configuration (ensemble de pilotes
et paramètres définis dans Panneau de configuration – système - profil matériel), une clé est créée.
Dans le cas où plusieurs configurations matérielles existent, ces clés sont appelées ControlSet001,
ControlSet002 etc. La configuration utilisée actuellement est disponible par la clé
CurrentControlSet.
SYSTEM \ CurrentControlSet
CurrentControlSet est une liaison vers la configuration ControlSetXXX choisie pour le
démarrage de l’ordinateur. elle comprend les sous-clés suivantes :
Control
Elle contient l’ensemble des données statiques de la configuration : répertoires d’installation,
fuseau horaire …
- 14 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Enum
Les informations relatives aux périphériques détectés lors du démarrage de Windows NT sont
rangées dans cette sous-clé.
Services
Cette sous-clé contient les paramètres de configuration de tous les services et pilotes du noyau
de Windows NT.
Hardware Profiles
Elle contient les paramètres de profils matériels figurant dans HKCC.
- 15 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
RDISK
L’utilitaire RDISK.EXE permet de créer des « disquettes de réparation d’urgence » pour
Windows NT (abrégé ERD en anglais pour Emergency Repair Disk). N’étant dans aucun menu
standard, pour lancer ce programme, il faut cliquer sur Démarrer - Exécuter et saisir le paramètre
rdisk.exe (cet outil système se trouve dans le répertoire \WINNT\system32).
Remarque : il est à noter que cette commande passée sans paramètres ne permet pas de
sauvegarder efficacement la base de registre. La disquette de réparation obtenue ne contient
pratiquement aucune information sur la sécurité.
Pour créer une disquette de réparation efficace, il est nécessaire d’exécuter le programme avec
le paramètre /s.
La commande rdisk.exe /s entraîne une sauvegarde complète des ruches du registre dans le
répertoire \WINNT\repair.
Les fichiers security._ et sam._ sont créés alors que les fichiers software._ , system._ et
default._ existent même sans utiliser le paramètre /s. Chacun de ces fichiers compressés est à mettre
en parallèle avec la ruche de même nom. On ne peut pas intervenir directement sur ces fichiers du fait
de leur compression.
Remarque : Si le mot de passe administrateur est changé et si l’on est obligé de restaurer le
registre à partir d’une ancienne disquette, c’est le mot de passe en vigueur au moment de la création
de la disquette qui fonctionnera.
- 16 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
REGEDIT et REGEDT32
Avec ces deux outils, il est possible de sauvegarder ou de restaurer une partie du registre. Bien
sûr, comme ces outils fonctionnent sous l’interface graphique de Windows NT, cela ne permet pas de
réparer la base de registres lorsque le problème est vraiment grave (écran bleu au démarrage de
Windows NT).
Remarque : les fichiers .reg sont des fichiers texte. Il est possible de voir leur contenu et de les
éditer avec Notepad.exe. C’est là la principale utilité de la fonction exporter de Regedit.exe.
On sélectionne la clé que l’on désire sauvegarder. Dans le menu, Registre sélectionner
Enregistrer la clé. Cette fois-ci, il n’y a pas d’extension particulière au fichier. Ce fichier contient la clé
et tout son ensemble de sous-clés et de valeurs avec les droits affectés. Contrairement à
Regedit.exe, on a une véritable sauvegarde d’une partie du registre.
Pour restaurer la clé, il faut lancer RegEdt32, cliquer sur registre puis restaurer.
Regback.exe et Regrest.exe
Ces deux petits utilitaires sont fournis avec le Kit de Ressources Techniques de NT Serveur. Le
premier, regback.exe, permet de sauvegarder le registre, la restauration étant réalisée par le
deuxième, regrest.exe.
Ces programmes fonctionnent en ligne de commande. De plus, la faible taille du fichier
regrest.exe permet de le mettre sur une disquette.
- 17 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
REGBACK
La première syntaxe possible pour l’utilitaire regback.exe est :
regback nom_de_répertoire
Dans ce cas, toutes les ruches sont sauvegardées dans le répertoire « nom_de_répertoire ».
Les chemins au format UNC (universal naming convention) ne sont pas admis.
C:\NTRESKIT>regback \regsave
saving SECURITY to \regsave\security
saving SOFTWARE to \regsave\software
saving SYSTEM to \regsave\system
saving .DEFAULT to \regsave\default
saving SAM to \regsave\sam
***Hive = \REGISTRY\USER\S-1-5-21-681642391-1817262813-654838779-500
Stored in file
\Device\Harddisk0\Partition1\WINNT\Profiles\MonsieurX\NTUSER
.DAT
Must be backed up manually
regback <filename you choose> users S-1-5-21-681642391-1817286213-
654838779-500
A l’exécution, le programme indique le nom des ruches qu’il n’a pas réussi à sauvegarder (ici à
cause de son nom trop long). Il propose dans ce cas la commande à réaliser pour effectuer cette
sauvegarde, ce qui amène à la deuxième syntaxe pour Regback : celle de la sauvegarde partielle :
regback nom_de_fichier type_de_ruche nom_de_ruche
Les seuls types de ruches acceptés sont users et machine qui correspondent respectivement
à HKU et HKLM. Sans cette information, la sauvegarde échouera. Le nom_de_ruche correspond au
nom de la sous-clé de HKU (soit .default soit un SID) ou HKLM (software, system …)
REGREST
Avant tout, il faut souligner que le programme regrest.exe comporte quelques contraintes :
• Il ne fonctionne que sous Windows NT, car il fait sans cesse appel à la procédure
RegReplaceKey du système.
• Pour pouvoir l’utiliser, l’utilisateur doit avoir le droit de « restaurer les fichiers et les répertoires ». Il
doit donc être soit opérateur de sauvegarde, soit administrateur local.
• Les fichiers de sauvegarde créés par regback.exe doivent être situés sur le volume système.
• Enfin, après utilisation, il faut redémarrer l’ordinateur pour assurer l’intégrité des données.
Le répertoire de sauvegarde est l’endroit où les fichiers générés par regback.exe ont été
placés. Le répertoire temporaire est l’endroit où regrest.exe va créer une copie des ruches actuelles
avant la restauration pour pouvoir faire marche arrière en cas de problème. Pour annuler la
restauration, il suffit de transférer les fichiers de ce répertoire temporaire vers le répertoire des ruches
et de relancer l’ordinateur.
Là encore, une deuxième syntaxe est possible pour éviter la restauration complète :
regrest nom_de_sauvegarde nom_de_répertoire type_de_ruche nom_de_ruche
- 18 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Des deux outils fournis en standard avec Windows NT pour modifier le registre, regedit.exe est
le plus limité :
• il ne connaît aucune information de sécurité sur la base de registre,
• Il ne sait afficher que trois types de valeur : double mot, chaîne et binaire (REG_DWORD,
REG_SZ et REG_BINARY). Toute valeur d’un autre type sera présentée sous forme binaire.
L’interface de regedit.exe peut être comparée à celle de l’explorateur NT. Sur la gauche, on
retrouve l’arborescence des clés et sur la droite, le type et la valeur de la clé sélectionnée. Toutefois, il
n’y a pas d’indication de présence de sous-clés, seul un double-clic sur une clé (sous-clé) permet
d’afficher les sous-clés dépendantes.
Importation, exportation
Ces deux fonctions, disponibles dans le menu déroulant registre, permettent respectivement de
fusionner ou de créer un fichier .reg (cf. préced.). Les fichiers .reg sont des fichiers texte dans
lesquels on retrouve écrites les unes à la suite des autres les différentes clés et leurs valeurs.
REGEDIT4
[HKEY_CURRENT_USER\Keyboard Layout]
[HKEY_CURRENT_USER\Keyboard Layout\Preload]
"1"="0000040C"
[HKEY_CURRENT_USER\Keyboard Layout\Substitutes]
Entre crochets, on retrouve la clé ou la sous-clé identifiée par son chemin d’accès complet. Les
valeurs sont écrites à la suite.
Dans le cas présent, on a une sous-clé Preload contenant une valeur de type REG_SZ
appelée 1 et dont le contenu est 0000040C.
L’autre sous-clé Substitutes ne contient pas de valeur.
- 19 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Modification de clés
Pour faire tout un ensemble d’actions sur les clés et les valeurs, différentes fonctions sont
disponibles dans le menu Edition.
Avec Nouveau, on peut créer une clé ou une valeur de type REG_BINARY, REG_SZ ou
REG_DWORD. Il est possible de créer la clé à n’importe quel endroit de l’arborescence sauf au
niveau de la racine (seule les 6 clés racines citées plus en avant peuvent être placées à l’origine).
Bien sûr, comme pour les droits sur des répertoires, il faut avoir les droits adéquats pour créer une clé
ou une valeur à un endroit donné. Mais il est impossible de visualiser les droits sur les clés.
Pour modifier le nom d’une clé ou d’une valeur, on dispose de la fonction Renommer (toujours
dans le menu Edition). Pour modifier le contenu d’une valeur, il suffit de double-cliquer sur son nom et
une fenêtre d’édition apparaît, différente pour chaque type de valeur.
Enfin, pour supprimer une valeur on peut soit utiliser la touche « suppr » du clavier soit utiliser la
fonction Supprimer du menu
L’avantage principal consiste dans le fait qu’une telle recherche peut balayer l’intégralité du
registre. Bien entendu, du fait des liaisons existantes au sein du registre, la même valeur ou clé pourra
se retrouver à plusieurs endroits.
- 20 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Le principal intérêt de
regedt32.exe par rapport
à regedit.exe, est de
prendre en compte tout
l’aspect sécurité
complétant ainsi toutes
les informations
nécessaires à la
reconstitution d’une clé en
terme de type de données.
De plus, regedt32.exe
n’est pas limité aux trois
type de données évoqués
en ce qui concerne
regedit.exe.
Les deux fonctions Enregistrer la clé et Restaurer sont disponibles dans le menu Registre de
regedt32.exe. C’est une véritable sauvegarde des données contrairement à regedit.exe qui se
contentait d’enregistrer le contenu des valeurs. Les fichiers choisis pour recevoir les données ainsi
sauvegardées n’ont pas d’extension particulière et la visualisation par un éditeur de texte ne donne
absolument aucune information.
Il est possible de charger et décharger une ruche avec l’outil regedt32.exe. Cette manipulation
rend possible les accès directs aux fichiers registres enregistrés dans le répertoire %SystemRoot
%\system32\config. L’utilisation de cette commande implique de bien connaître les manipulations
permettant de modifier les fichiers ruches.
Remarque : Pour pouvoir effectuer ces manipulations, le droit administrateur est insuffisant, il
faut avoir les droits « système d’exploitation ».
Exactement comme pour regedit.exe, il est possible sous regedt32.exe d’ouvrir le registre
d’une machine distante. Il suffit d’utiliser l’entrée Choisir un ordinateur du menu Registre pour
obtenir l’ouverture des clés HKLM et HKU distantes. Par défaut, presque toutes les manipulations
sont possibles à distance. Cela est bien pratique mais représente une faille importante dans la
sécurité.
- 21 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
De la même manière que NT apporte de la sécurité pour un système de fichier avec NTFS, tout
une base de sécurité peut être utilisée pour le registre.
La sécurité sur la base de registre est basé sur le même principe que les fichiers et répertoires
pour NTFS : pour chaque clé, on dispose d’un propriétaire et de permissions. Il est donc
compréhensible que le menu Sécurité de regedt32.exe soit composé de trois parties : Permissions ,
Audit et Propriétaire .
Les permissions
L’interface permettant de fixer les
permissions sur les clés est quasiment
identique à celle permettant de régler les
droits sur des répertoires. On y retrouve :
La fenêtre que l’on obtient en activant le bouton Ajouter est identique à celle obtenue avec les
droits sur les fichiers en NTFS. Par défaut, seule la liste avec les groupes est affichée. Il faut cliquer
sur le bouton Montrer les utilisateurs si l’on veut les détails.
L’accès spécial
Bien entendu, le type d’accès Contrôle total, proposé par défaut, correspond à l’application de
la totalité des options.
- 22 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
- 23 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Pour une définition d’accès spécial, les actions disponibles sont (copie de l’aide en ligne) :
L’audit
Si vous êtes administrateur d’une machine
en NTFS, il est possible d’auditer certaines
actions sur des répertoires. Les événements
(succès ou échec) sont alors enregistrés dans le
journal de sécurité de l’observateur
d’événements. Il en va de même pour la base de
registre.
Propriétaire
Il est possible de s’approprier une clé comme on s’approprie des fichiers en NTFS. Il suffit pour
cela d’utiliser la fonction Propriétaire du menu Sécurité. On active alors le bouton Appropriation, si
l’on dispose des droits suffisants sur la clé sélectionnée. L’appropriation de clé ne change pas les
droits posés sur les clés, si ce n’est que le nouveau propriétaire peut à sa guise changer les droits des
clés lui appartenant.
- 24 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
4. Annexes
On dénombre 11 types de données pour les valeurs de la base de registre : sept types majeurs
et quatre types mineurs. Les applications n’utilisent que les types majeurs pour leurs données, les
mineurs n’étant utilisés que par le noyau Windows NT.
REG_DWORD
REG_DWORD (DWORD correspond à Double WORD, deux mots de 16 bits) est le type de
données le plus courant du registre. Une valeur REG_DWORD peut donc contenir une valeur allant
jusqu’à 232. Cependant de nombreuses clés du registre expriment des valeurs booléennes avec ce
type de données (nombreuses sont les clés ayant pour valeur 0 ou 1). Dans d’autre cas, la valeur
correspond juste à une quantité, comme la durée d’une réponse à une demande de duplication
réseau. Le plus difficile est de savoir à quoi correspond une valeur. Sans cette information, toute
modification est hasardeuse et risquée.
REG_SZ
Une valeur de type REG_SZ contient une chaîne de 3 octets dont le dernier (caractère final) est
nul. Enregistré au format REG_SZ, NT occupe trois octets : deux octets pour le contenu, et un autre
pour le caractère final.
Ce type de données est utilisé pour le stockage de nom en clair, de numéro de version… Le
contenu d’une valeur REG_SZ n’est pas limité aux seuls caractères ASCII ; tous les caractères
Unicode sont supportés.
Remarque : le dernier octet est pratiquement invisible, à moins de concevoir des programmes
pour gérer des valeurs de registre. Les outils d’édition du registre se chargent d’ajouter et de
supprimer le caractère final, en fonction du format de la valeur.
REG_MULTI_SZ
Ce type de données permet la concaténation de plusieurs chaînes de caractères Unicode dans
un bloc unique.
Par exemple, on peut l’utiliser pour enregistrer les chaînes d’identification de chacun des Bios
vidéo d’un PC dans la clé HKLM \ HARDWARE \ DESCRIPTION \ SYSTEM \ VideoBiosVersion.
Dans les applications, les valeurs REG_MULTI_SZ sont extraites par blocs, ceux-ci pouvant
être ensuite mis à jour.
REG_EXPAND_SZ
NT propose un certain nombre de variables systèmes utilisables avec des langages de
commandes, interprétés ou compilés, dans Panneau de configuration / Système / Environnement et
en ligne de commande. Par exemple, la variable d’environnement %SystemRoot% pointe vers le
répertoire racine de Windows NT.
On retrouve également cette fonctionnalité dans des valeurs de type REG_EXPAND_SZ. Ce
type s’apparente à REG_SZ.
- 25 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Remarque restrictive : Supposons qu’une clé du registre de type REG_EXPAND_SZ ait pour
valeur %SystemRoot%\media, on pourrait estimer qu’un programme appelant ou le registre lui-même
soit capable de développer la variable imbriquée. Malheureusement, il n’en est rien ; l’opération doit
être réalisée manuellement.
REG_BINARY
Les programmeurs se servent couramment de représentations binaires. Par exemple, un
masque numérique binaire est un excellent moyen de figurer des fonctions ou des drapeaux activés
ou non-activés. Chaque bit correspond à un drapeau booléen, ce qui permet de stocker 32 drapeaux
indépendants les uns les autres dans un seul DWORD. Bien entendu, le format binaire est plus
souvent utilisé pour le stockage de données binaires arbitraires (images, clés de chiffrement, mots de
passe chiffrés, etc.).
Pour le registre NT, Microsoft a adopté le type REG_BINARY. Les données binaires sont
brutes, elles ne contiennent pas d’artifices comme les caractères finaux ou les extensions de chaînes.
Elles sont stockées et extraites en l’état.
REG_LINK
Le type REG_LINK permet de faire un liaison d’une valeur vers une clé. Le contenu d’une
valeur de ce type est une chaîne de caractères correspondant au chemin de la sous-clé pointée.
REG_NONE
REG_NONE est le type de données le plus simple : il s’agit d’un gigantesque zéro. Etant vide, il
indique seulement la présence d’une valeur. REG_NONE ne permet pas de stocker de données dans
une clé. Ce type est utile lorsque l’absence ou l’existence d’une clé détermine une action.
REG_NONE est peu utilisé.
REG_DWORD_BIG_ENDIAN
Ce type de valeur a été conçu pour pouvoir faire fonctionner NT sur différentes plates-formes.
Dans l’architecture INTEL (x86 et PENTIUM), le mode utilisé pour la représentation des données en
mémoire est le LITTLE ENDIAN : lorsqu’un mot est écrit en mémoire, c’est l’octet de poids faible qui
est écrit en premier. Cela donne pour la valeur hexadécimale 12345678, une représentation en
mémoire : 78 56 34 12.
Pour d’autres architectures, à base de processeurs Power Pc ou Alpha par exemple, la
représentation des données est de type BIG ENDIAN. C’est l’octet de poids fort qui est écrit en
premier : 12 34 56 78.
Le type REG_DWORD_BIG_ENDIAN est presque exclusivement présent sur ce deuxième type
de plates-formes.
REG_FULL_RESSOURCE_DESCRIPTOR
Les ordinateurs ne disposent pas de ressources infinies : sur plate-forme Intel, par exemple, le
nombre d’IRQ et les plages d’accès direct à la mémoire (DMA) sont restreints. Le système doit répartir
les ressources équitablement entre les programmes demandeurs. Dans Windows NT, ce service est
assuré par la couche d’abstraction matérielle (HAL).
Les informations concernant la disponibilité des ressources sont dans la clé HKLM\HARD-
WARE. Elles sont collectées lors du démarrage, puis placées en mémoire et associées aux clés du
registre. Du fait de leur complexité, ces informations sont stockées et consolidées dans un descripteur
de ressources : REG_FULL_RESSOURCE_DESCRIPTOR.
- 26 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
REG_RESSOURCE_LIST
Pour éviter la prolifération de valeurs de type REG_FULL_RESSOURCE_DESCRIPTOR (en
principe, une par ressource), le registre contient le type de données REG_RESSOURCE_LIST. Ce
type permet de regrouper des descripteurs de ressources interdépendants dans une même unité.
REG_RESSOURCE_REQUIREMENT_LIST
Aucune documentation n’a été trouvée pour l’instant sur ce type de données.
- 27 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Le kit de ressources NT 4.0 est en fait la reprise du kit de ressources pour NT 3.51 mais avec
l’ajout d’un nouvel outil : reg.exe . Cette nouvelle commande peut efficacement remplacer tout un
ensemble d’outils également présents dans le kit de ressources.
Le tableau ci-dessous dresse la liste des différents programmes concernant le registre contenus
dans le Kit de Ressources Techniques.
- 28 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Reg.exe est pratiquement capable d’exécuter toutes les opérations de regedt32.exe à partir
de la ligne de commande. Cela va donc permettre l’utilisation de scripts pour modifier le registre.
Au point de vue syntaxe, la commande reg est immédiatement suivie d’une option incluse dans
la liste suivante : query, add, update, delete, copy, save, backup, restore, load et unload.
Dans l’exemple ci-dessous, reg est associé à query pour afficher la sous-clé de HKLM
spécifiée :
C:\ntreskit>reg query HKLM\Software\Qualcomm /s
Listing of [Software\Qualcomm]
[Eudora]
[Eudora\3.0.1]
Valeur Valeur de clé à interroger. Sans cette information, toutes les valeurs sont interrogées.
CléRacine : Paramètre optionnel, il peut s’agir de HKLM, HKCU, HKCR, HKU ou HKCC sur
l’ordinateur local ; HKLM ou HKU sur un ordinateur distant.
Si ce paramètre est omis, la clé racine HKLM est sélectionnée par défaut
Valeur Nom de la valeur à créer sous Clé. Sans ce paramètre, la clé créée est vide.
NouvelleValeur Valeur mise dans le contenu de Valeur. Les chaînes de caractères doivent être
mises entre guillemets.
- 29 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
CléRacine : Paramètre optionnel, il peut s’agir de HKLM, HKCU, HKCR, HKU ou HKCC sur
l’ordinateur local ; HKLM ou HKU sur un ordinateur distant.
Si ce paramètre est omis, la clé racine HKLM est sélectionnée par défaut
NouvelleValeur Valeur mise dans le contenu de Valeur. Les chaînes de caractères doivent être
mises entre guillemets.
CléRacine : Paramètre optionnel, il peut s’agir de HKLM, HKCU, HKCR, HKU ou HKCC sur
l’ordinateur local ; HKLM ou HKU sur un ordinateur distant.
Si ce paramètre est omis, la clé racine HKLM est sélectionnée par défaut
Valeur Valeur de clé à supprimer. Sans cette information, toutes les valeurs et sous-clés.
CléRacine : Paramètre optionnel, il peut s’agir de HKLM, HKCU, HKCR, HKU ou HKCC sur
source & cible l’ordinateur local ; HKLM ou HKU sur un ordinateur distant.
Si ce paramètre est omis, la clé racine HKLM est sélectionnée par défaut.
ValeurSource Valeur de CléSource à copier. Si ce paramètre est omis, toutes les clés et les valeurs
de CléSource sont copiées.
ValeurCible Nom de la valeur destination. Ce paramètre n’est pris en compte que lorsque
ValeurSource est spécifié.
- 30 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
CléRacine : Paramètre optionnel, il peut s’agir de HKLM, HKCU, HKCR, HKU ou HKCC sur
l’ordinateur local ; HKLM ou HKU sur un ordinateur distant.
Si ce paramètre est omis, la clé racine HKLM est sélectionnée par défaut.
Clé Nom complet de la clé source. Toutes les valeurs, sous-clés et droits sur la clé seront
sauvegardées
- 31 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
RegOpenKeyEx Ouvre, si elle existe, une sous-clé du registre relative à une clé
ouverte
RegCreateKeyEx Ouvre si elle existe, ou crée une sous-clé relative à une clé
ouverte
RegCloseKey Ferme le Handle d’une clé précédemment ouverte
RegUnLoadKey Supprime une clé racine d’un registre et ses descendants (local
ou réseau)
RegConnectRegistry Etablit une connexion au registre d’un ordinateur distant
( seulement sur HKLM ou HKU)
RegEnumKeyEx Enumère les sous-clés d’une clé
RegNotifyChangeKeyValue Indique quand une clé racine du registre ou une de ses sous-clés
a changé
RegSetValueEx Attribue une valeur à une clé avec de nouveaux types de données
- 32 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
- 33 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
ICONES, MENUS
• Commande commune à tous les types de fichiers non associés, automatisation de Ouvrir avec :
HKCR\Unknown\shell contient en principe une sous-clé openas qu’il n’y a pas lieu de supprimer.
Celle-ci correspond à Ouvrir avec… .
PARAMETRES
• Paramètres de Windows NT :
HKLM\Software\Microsoft\Windows NT\CurrentVersion
- 34 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
MODIFICATIONS, RESTRICTIONS
• Restriction des droits de modification des types de fichiers (Explorateur / Affichage / Options /
Types de fichiers) :
•
HKCR\type de fichier ; DWORD : EditFlags ; Valeurs (hexa) combinables par un OU logique :
- 35 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Valeur Description
REG_NONE Pas de type de valeur
REG_SZ Chaîne UNICODE terminée par un caractère nul
REG_EXPAND_SZ Chaîne UNICODE terminée par un caractère nul, pouvant
avoir des variables d’environnement intégrées
REG_BINARY Données binaires de longueur arbitraire
REG_DWORD Nombre 32 bits
REG_DWORD_BIG_ENDIAN Nombre 32 bits, octet de poids fort en premier
REG_LINK Lien symbolique UNICODE
REG_MULTI_SZ Ensemble de chaîne UNICODE
REG_RESSOURCE_LIST Description des ressources matérielles
REG_FULL_RESSOURCE_DESCRIPTOR Description des ressources matérielles
REG_RESSOURCE_REQUIREMENT_LIST Ressources nécessaires
Sous-clés de HKEY_CURRENT_USER
Sous-clé Description
AppEvents Associations son / évènement
Console Paramétrage des fenêtres appelées par raccourcis (par ex.
largeur, hauteur, couleur)
Control Panel Paramétrage de l’écran de veille, thèmes du bureau, clavier et
souris.
Environnement Définitions des variables d’environnement
Keyboard Layout Paramétrage national de l’agencement du clavier
Network Mapping et paramétrage des périphériques de réseau
Printers Paramétrage des connexions d’imprimantes
Software Préférences logicielles propres à l’utilisateur
UNICODE Program Groups Définitions des groupes du menu Démarrer propres à l’utilisateur
Windows 3.1 Migration Status Données d’état des fichiers pour les systèmes passant de
Windows 3.x à NT 4.0
- 36 / 37 -
ESAT/DMSI La base de registre sous Windows NT 4.0
Sous-clés de HKLM\SYSTEM\CurrentControlSet
Sous-clé Description
Control Paramètres d’analyse de performances et de configuration de NT
Enum Informations recueillies lorsque les drivers et les services sont
activés.
Hardware Profiles Informations de configuration relatives à l’affichage
Service Contrôle du démarrage et des erreurs pour les drivers de
périphériques et les services
- 37 / 37 -