4.5 : Le Registre Windows

On referme cette section système avec le Provider Registry, entrevu en leçon 4.1. Sophie prévient d’emblée : « C’est la partie la plus sensible de cette section. Le Registre pilote une bonne partie du comportement de Windows — une clé modifiée à la légère peut rendre un service instable, voire empêcher un serveur de redémarrer correctement. »

Rappel de la leçon 1.3 : le Registre est une notion propre à Windows, sans équivalent sous Linux/macOS.

Naviguer dans le Registre comme dans un dossier

Grâce au Provider Registry vu en 4.1, les cmdlets sont exactement les mêmes que pour les fichiers :

Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

Les deux ruches principales que vous croiserez le plus souvent :

  • HKLM: (HKEY_LOCAL_MACHINE) : réglages qui s’appliquent à toute la machine, quel que soit l’utilisateur connecté
  • HKCU: (HKEY_CURRENT_USER) : réglages propres à l’utilisateur actuellement connecté

Lire la valeur d’une clé

Une clé de Registre est un dossier ; ses valeurs sont un peu comme les propriétés d’un fichier. On les lit avec Get-ItemProperty :

Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "ProductName"

Créer ou modifier une valeur

Pour créer une nouvelle valeur dans une clé existante :

New-ItemProperty -Path "HKLM:\SOFTWARE\Nordika" -Name "Version" -Value "1.0" -PropertyType String

Pour modifier une valeur déjà existante :

Set-ItemProperty -Path "HKLM:\SOFTWARE\Nordika" -Name "Version" -Value "1.1"

Créer une nouvelle clé

Une clé se crée comme un dossier, avec New-Item (déjà vu en 4.2) :

New-Item -Path "HKLM:\SOFTWARE\Nordika"

Supprimer une clé ou une valeur

Remove-ItemProperty -Path "HKLM:\SOFTWARE\Nordika" -Name "Version"
Remove-Item -Path "HKLM:\SOFTWARE\Nordika" -Recurse

Ici plus qu’ailleurs, le réflexe -WhatIf (vu en 4.2) n’est pas une option, c’est une nécessité avant toute suppression dans le Registre. Une clé supprimée par erreur dans HKLM:\SYSTEM peut rendre un serveur instable au prochain redémarrage.

Droits nécessaires

La plupart des clés sous HKLM: nécessitent une console PowerShell lancée en tant qu’administrateur. Sans ces droits, vous obtiendrez une erreur d’accès refusé plutôt qu’un résultat vide — un point qu’on approfondira avec la gestion des erreurs en section 5.

Un exemple concret Nordika

$cheminNordika = "HKLM:\SOFTWARE\Nordika"

if (-not (Test-Path $cheminNordika)) {
    New-Item -Path $cheminNordika | Out-Null
}

New-ItemProperty -Path $cheminNordika -Name "DernierAudit" -Value (Get-Date).ToString() -PropertyType String -Force

Ce script (dont la logique conditionnelle sera détaillée en section 5) crée une clé Registre personnalisée pour Nordika, et y note la date du dernier passage du script d’audit — une pratique courante pour « marquer » un poste déjà traité par une automatisation.

Retenez le fil de toute cette section 4 : FileSystem et Registry sont deux Providers différents (vu en 4.1), mais partagent presque exactement les mêmes cmdlets (Get-ChildItem, New-Item, Remove-Item, Test-Path). Une fois FileSystem maîtrisé, le Registre n’a donc plus rien d’un territoire complètement inconnu.

Dans la prochaine leçon, un TP pour mettre en pratique toute cette section système : un script d’inventaire complet du poste.