Table des matières
Registre Windows
La Registre Windows (anciennement base de registre ou BDR) est, sous Windows, une base de données contenant l'essentiel des réglages du système et des logiciels qui y sont installés.
Voici quelques infos sur son contenu, comment il est organisé et comment le manipuler en ligne de commande.
Infos générales
Windows utilise des SID (Security Identifiers) pour identifier de façon unique chaque système, utilisateur ou groupe. A ne pas confondre avec le UID/GUID, qui sert à des usages plus généraux.
Plus d'informations sur les SID courants (hors ceux des utilisateurs en eux-mêmes) : https://www.toutwindows.com/sid.shtml
Organisation
Accessible avec la commande regedit
depuis une invite de commande ou depuis la fenêtre Exécuter (⊞ Win+R).
La base de registre s'organise en ces quelques dossiers racines :
Nom | Alias | Utilité | Droits d'accès |
---|---|---|---|
HKEY_CLASSES_ROOT | HKCR | Données relatives aux applications (raccourcis, association aux extensions, etc.). Raccourci vers une clé de HKLM. | Administrateur uniquement |
HKEY_CURRENT_USER | HKCU | Données spécifiques à l'utilisateur actuellement connecté. | Utilisateur concerné |
HKEY_LOCAL_MACHINE | HKLM | Données de configurations communes à tous les utilisateurs. | Administrateur uniquement |
HKEY_USERS | HKU | Réglage des stratégies de groupe et utilisateurs actuellements connectés. | Administrateur uniquement |
HKEY_CURRENT_CONFIG | HKCC | Données relatives au profil hardware. Raccourci vers une clé de HKLM. | Administrateur uniquement |
Chacune de ces “clés” est enregistrée dans un fichier de configuration que l'on appelle une ruche (hive, en anglais). Ces ruches sont dans le dossier système %SystemRoot%\System32\Config
excepté celle relative à l'utilisateur connecté, qui est dans le dossier de l'utilisateur en question %UserProfile%\ntuser.dat
.
Clés-racines
HKEY_CLASSES_ROOT (HKCR)
Référence à HKEY_LOCAL_MACHINE\Software\Classes
. Il s'agit juste d'un raccourci, afin de ne pas avoir à aller farfouiller dans HKLM pour ça.
HKEY_CURRENT_USER (HKCU)
Si l'utilisateur n'a pas de droit Administrateur, alors c'est le seul endroit où il a le droit d'écrire (et de lire ? ⇨ à vérifier ).
Ce dossier sera différent en fonction de quel utilisateur est en train d'accéder à la base de registre. Ce sont juste les préférences et réglages de CET utilisateur-là, et ils sont stockés dans le fichier ntuser.dat
à la racine de son dossier utilisateur.
HKEY_LOCAL_MACHINE (HKLM)
HKEY_USERS (HKU)
.DEFAULT
: réglages de base utilisés lorsqu'on créé un nouvel utilisateur.S-1-5-21-XXX
: les ruches des différents utilisateurs (actuellement connectés ? ⇨ à vérifier )
HKEY_CURRENT_CONFIG (HKCC)
Référence à HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001
. Il s'agit juste d'un raccourci, afin de ne pas avoir à aller farfouiller dans HKLM pour ça.
Clés utiles
SID des utilisateurs
Les SID de tous les utilisateurs existants sur cette machine sont renseigné dans HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\
. Cela peut permettre de remonter à l'utilisateur à partir d'un SID lu dans HKU
.
TODO
HKLM\Software et HKCU\Software
HKLM\Software\Microsoft\Windows\CurrentVersion et HKLM\Software\Microsoft\Windows NT\CurrentVersion
Manipulation en ligne de commande
Documentation officielle des commandes reg : https://docs.microsoft.com/fr-fr/windows-server/administration/windows-commands/reg
Types de données
On appelle clé un dossier du registre. Une donnée, stockée sous forme d'association qu'on aurait d'habitude tendance à appeler “clé-valeur” est appelée ici “nom de valeur - données de valeur” (name-data).
Voici les types de valeurs les plus courrants (pour une liste exhaustive, voir la doc) :
Désignation | Type | Exemples de valeurs |
---|---|---|
REG_BINARY | données binaires | |
REG_DWORD | nombre (32 bits) | (en hexa) 0, 1, f2e |
REG_QWORD | nombre (64 bits) | |
REG_SZ | texte | val1 |
REG_MULTI_SZ | tableau de chaines | val1 val2 val3 |
REG_LINK | chemin vers fichier |
Lecture de clé/valeur
reg query HKLM\Software\Chemin\vers\la\clé
Création/mise à jour de valeur
Base de la commande pour ajouter une nouvelle clé :
reg add HKLM\Software\chemin /v <valueName> /t <valueType> /d <valueData>
Base de la commande pour forcer l'écrasement si elle existe déjà (= mettre à jour)
reg add HKLM\Software\chemin /v <valueName> /t <valueType> /d <valueData> /f
Exemples :
reg add HKLM\Software\chemin /v maValeur /t REG_DWORD /d 2f /f reg add HKLM\Software\chemin /v maValeur /t REG_SZ /d "valeur" /f reg add HKLM\Software\chemin /v maValeur /t REG_MULTI_SZ /d "val1\0val2\0val3" /f
Suppression de clé/valeur
Pour supprimer une clé (et toutes ses valeurs) :
reg delete HKLM\Software\chemin
Pour supprimer une valeur en particulier :
reg delete HKLM\Software\chemin /v maValeur
Charger la ruche d'un utilisateur
reg load HKU\<user SID> C:\Users\<user name>\ntuser.dat
Une fois les actions terminées, pour retirer cette clé “temporaire” du registre :
reg unload HKU\<user SID>
En soi, rien ne nous oblige d'utiliser le SID de l'utilisateur dans cet exemple, mais ça permet de rester sur le même schéma que ce que fait Windows lorsqu'un utilisateur est connecté.
SID utilisateur
Pour récupérer le SID d'un utilisateur :
WMIC useraccount where name="<user name>" get sid