Outils pour utilisateurs

Outils du site


command-line:windows:registry

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 FIXME).

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)

  1. .DEFAULT : réglages de base utilisés lorsqu'on créé un nouvel utilisateur.
  2. S-1-5-21-XXX : les ruches des différents utilisateurs (actuellement connectés ? ⇨ à vérifier FIXME)

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

FIXME

HKLM\Software et HKCU\Software

HKLM\Software\Microsoft\Windows\CurrentVersion et HKLM\Software\Microsoft\Windows NT\CurrentVersion

Manipulation en ligne de commande

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
command-line/windows/registry.txt · Dernière modification : le 19/05/2020 à 08:40 de Yosko