Outils pour utilisateurs

Outils du site


command-line:windows:registry

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
command-line:windows:registry [le 15/05/2020 à 12:30] – créée Yoskocommand-line:windows:registry [le 19/05/2020 à 08:40] (Version actuelle) – [Lecture de clé] Yosko
Ligne 1: Ligne 1:
-====== Base de registre ====== +====== Registre Windows ====== 
-Quelques infos utiles sur la manipulation de la base de registre (infos générales et utilisation en ligne de commande).+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 Identifierspour identifier de façon unique chaque système, utilisateur ou groupeA 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 ===== ===== Organisation =====
 Accessible avec la commande ''regedit'' depuis une invite de commande ou depuis la fenêtre Exécuter (<key>Windows</key>+<key>R</key>). Accessible avec la commande ''regedit'' depuis une invite de commande ou depuis la fenêtre Exécuter (<key>Windows</key>+<key>R</key>).
Ligne 7: Ligne 15:
  
 ^ Nom ^ Alias ^ Utilité ^ Droits d'accès ^ ^ Nom ^ Alias ^ Utilité ^ Droits d'accès ^
-| HKEY_CLASSES_ROOT | HKCR | Données relatives aux applications (raccourcis, association aux extensions, etc.) | Administrateur uniquement | +| 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_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_LOCAL_MACHINE | HKLM | Données de configurations communes à tous les utilisateurs| Administrateur uniquement | 
-| HKEY_USERS | HKU |  | Administrateur uniquement | +| HKEY_USERS | HKU | Réglage des [[https://fr.wikipedia.org/wiki/Strat%C3%A9gie_de_groupe|stratégies de groupe]] et utilisateurs actuellements connectés. | Administrateur uniquement | 
-| HKEY_CURRENT_CONFIG | HKCC |  | 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''. 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''.
  
-==== HKEY_CLASSES_ROOT (HKCR) ====+==== 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. 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) ====+=== 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). 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. 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_LOCAL_MACHINE (HKLM) ===
  
-==== HKEY_USERS (HKU) ====+=== HKEY_USERS (HKU) ===
  
-==== HKEY_CURRENT_CONFIG (HKCC====+  - ''.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 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 ===== ===== 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 [[https://docs.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types|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 ====
 +<code winbatch>
 +reg query HKLM\Software\Chemin\vers\la\clé
 +</code>
 +
 +==== Création/mise à jour de valeur ====
 +Base de la commande pour ajouter une nouvelle clé :
 +<code batch>
 +reg add HKLM\Software\chemin /v <valueName> /t <valueType> /d <valueData>
 +</code>
 +
 +Base de la commande pour forcer l'écrasement si elle existe déjà (= mettre à jour)
 +<code batch>
 +reg add HKLM\Software\chemin /v <valueName> /t <valueType> /d <valueData> /f
 +</code>
 +
 +Exemples :
 +<code batch>
 +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
 +</code>
 +
 +==== Suppression de clé/valeur ====
 +Pour supprimer une clé (et toutes ses valeurs) :
 +<code batch>
 +reg delete HKLM\Software\chemin
 +</code>
 +Pour supprimer une valeur en particulier :
 +<code batch>
 +reg delete HKLM\Software\chemin /v maValeur
 +</code>
 +==== Charger la ruche d'un utilisateur ====
 +
 +<code winbatch>
 +reg load HKU\<user SID> C:\Users\<user name>\ntuser.dat
 +</code>
 +
 +Une fois les actions terminées, pour retirer cette clé "temporaire" du registre :
 +
 +<code winbatch>
 +reg unload HKU\<user SID>
 +</code>
 +
 +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 :
 +<code winbatch>
 +WMIC useraccount where name="<user name>" get sid
 +</code>
command-line/windows/registry.1589545847.txt.gz · Dernière modification : le 15/05/2020 à 12:30 de Yosko