Aller au contenu principal

Registre Windows

Contexte et historique

  • Avant Windows 95

    • Configuration stockée dans des fichiers texte (INI) répartis à divers endroits.
    • Problèmes : duplication, incohérences, difficulté de gestion centralisée.
  • Introduction du registre

    • Windows 95 inaugure la base de registre (Registry) : un magasin hiérarchique centralisé.
    • Objectif : unifier la configuration système et applicative.

Pourquoi le registre existe

  • Centralisation

    • Remplace les multiples INI, CFG, et .INF.
  • Hiérarchisation

    • Arborescence clé/valeur, plus structurée que des fichiers plats.
  • Performance et atomicité

    • Lecture/écriture optimisée, support des transactions partielles.
  • Sécurité

    • ACL (permissions style NTFS) sur chaque clé de registre.

Structure générale

Le registre est organisé en hives (ruche). Chaque hive correspond à un gros fichier stocké sur disque (sous %SystemRoot%\System32\Config pour les hives machine, et dans le profil utilisateur pour HKCU).

HiveFichierContenu principal
HKEY_LOCAL_MACHINE (HKLM)SYSTEM, SOFTWARE, etc.Configuration machine (tous utilisateurs)
HKEY_CURRENT_USER (HKCU)%USERPROFILE%\NTUSER.DATConfiguration du profil courant
HKEY_USERSTous les profils utilisateursRassemble HKCU de chaque utilisateur
HKEY_CLASSES_ROOT (HKCR)Fusion HKLM\SOFTWARE\Classes et HKCU\Software\ClassesAssociations de fichiers, COM
HKEY_CURRENT_CONFIGLien vers la config matérielle activeParamètres matériels dynamiques

Clés, sous-clés et valeurs

  • Clé : équivalent d’un dossier (contenant sous-clés et valeurs).

  • Valeur : paire (Nom, Type, Donnée).

    • Types courants :

      • REG_SZ (chaîne),
      • REG_DWORD (entier 32 bits),
      • REG_QWORD (entier 64 bits),
      • REG_MULTI_SZ (tableau de chaînes),
      • REG_BINARY (données brutes).

Registry Editor (regedit.exe)

  • Fonctionnalités

    • Navigation visuelle de l’arborescence.
    • Export/Import de .reg.
    • Modifier ACL (clic droit → Permissions).
  • Mises en garde

    • Nécessite souvent les droits administrateur.
    • Une mauvaise modification peut rendre Windows instable.

Le provider Registry dans PowerShell

PowerShell expose le registre comme un provider de type système de fichiers :

  • Racines : HKLM: et HKCU:
  • Possibilité de naviguer avec Set-Location, Get-ChildItem, etc.

Exemples pratiques avec PowerShell

danger

Tester ces exemples dans votre machine virtuelle

# Lister les hives machine
Get-ChildItem -Path Registry::HKLM

# Lister les clés sous SOFTWARE
Get-ChildItem -Path HKLM:\SOFTWARE

Lire des valeurs

# Valeur d’une clé
Get-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name Wallpaper

# Lecture de toutes les propriétés
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa'

Tester l’existence d’une clé ou d’une valeur

# Clé existante ?
Test-Path -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'

# Valeur existante ?
(Get-ItemProperty -Path HKCU:\... -Name 'NomValeur' -ErrorAction SilentlyContinue) -ne $null

Créer une sous-clé et une valeur

attention

Remplacer Username par votre nom d’utilisateur

# Créer la clé MyApp
New-Item -Path 'HKCU:\Software\Username\MyApp' -Force

# Ajouter une valeur chaîne
New-ItemProperty -Path 'HKCU:\Software\Username\MyApp' `
-Name 'MessageBienvenue' `
-Value 'Bienvenue dans MyApp!' `
-PropertyType String -Force

# Ajouter un DWORD
New-ItemProperty -Path 'HKCU:\Software\Username\MyApp' `
-Name 'Enabled' `
-Value 1 `
-PropertyType DWord -Force

Modifier une valeur existante

# Désactiver le démarrage rapide (exemple système)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power' `
-Name 'HiberbootEnabled' `
-Value 0

Supprimer une clé ou une valeur

attention

Remplacer Username par votre nom d’utilisateur

# Supprimer une valeur
Remove-ItemProperty -Path 'HKCU:\Software\Username\MyApp' -Name 'MessageBienvenue'

# Supprimer la sous-clé entière
Remove-Item -Path 'HKCU:\Software\Username\MyApp' -Recurse -Force

Exporter et importer

attention

Remplacer Username par votre nom d’utilisateur

# Exporter une branche en .reg
reg export "HKCU\Software\Username\MyApp" C:\temp\myapp.reg /y

# Importer un .reg
reg import C:\temp\myapp.reg

Exemple avancé : changer le fond d’écran

# Définir le chemin de l’image
$wall = 'C:\Images\montagne.jpg'

# Modifier la clé
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' `
-Name 'Wallpaper' `
-Value $wall

# Rafraîchir l’affichage
Add-Type -AssemblyName user32
[User32]::SystemParametersInfo(0x0014, 0, $wall, 0x0002)

Sécurité et bonnes pratiques

  • Sauvegarder avant modification

    reg export "HKLM\SOFTWARE" C:\backup\software-hive.reg /y
  • Utiliser -WhatIf et -Confirm

    Remove-Item -Path 'HKCU:\Software\Test' -Recurse -WhatIf
  • Préférer PowerShell à reg.exe pour l’automatisation

  • Restreindre les ACL

    • Vérifier/modifier via Get-Acl / Set-Acl si nécessaire.

À retenir

  1. Le registre est le cœur de la configuration Windows, centralisé et hiérarchique.
  2. Il remplace les fichiers INI : plus robuste, sécurisé, et performant.
  3. Chaque hive correspond à un contexte (machine/utilisateur).
  4. PowerShell offre un provider natif pour naviguer et modifier le registre en scripts.
  5. Toujours sauvegarder et tester avant toute modification en production.