Outils et methodes d'acces¶
Ce que vous allez apprendre¶
- Comment utiliser Regedit pour naviguer et modifier le registre
- Les commandes
reg.exeessentielles (lecture, ecriture, sauvegarde) - Comment manipuler le registre avec PowerShell
- Les fonctions de l'API Win32 et .NET
- Le format des fichiers
.regpour l'import/export
Regedit : l'outil graphique integre¶
Le plus rapide pour explorer le registre visuellement. Present sur toutes les versions de Windows depuis Windows 95.
Lancement : Win+R puis regedit puis Enter
Barre d'adresse
Depuis Windows 10 version 1703, Regedit a une barre d'adresse. Collez un chemin de cle pour y acceder instantanement. Essayez avec :
Ce que Regedit sait faire¶
| Fonction | Comment |
|---|---|
| Naviguer dans l'arborescence | Panneau gauche, comme l'Explorateur de fichiers |
| Creer / modifier / supprimer | Clic droit sur une cle ou une valeur |
| Rechercher | Ctrl+F -- cherche dans les cles, valeurs et donnees |
Exporter en .reg | Fichier > Exporter (ou clic droit > Exporter) |
Importer un .reg | Fichier > Importer (ou double-clic sur un fichier .reg) |
| Charger une ruche hors ligne | Fichier > Charger la ruche (selectionner un NTUSER.DAT) |
| Gerer les permissions | Clic droit sur une cle > Autorisations |
| Se connecter a un registre distant | Fichier > Se connecter au Registre reseau |
Outils tiers notables¶
| Outil | Utilite |
|---|---|
| Registry Explorer (Eric Zimmerman) | Analyse forensique de ruches hors ligne, supporte les fichiers de transaction |
| RegScanner (NirSoft) | Recherche avancee avec filtres par type, taille et date |
| Regshot | Compare deux instantanes du registre pour detecter ce qui a change |
| Process Monitor (Sysinternals) | Surveillance en temps reel des acces au registre par les processus |
Cas d'usage de Regshot
Vous installez un logiciel et vous voulez savoir exactement ce qu'il a modifie dans le registre ? Prenez un instantane avant l'installation, un apres, et Regshot vous montre la difference.
En resume
Regedit est l'outil graphique de base pour explorer et modifier le registre. Pour des besoins avances (forensique, surveillance, comparaison), des outils tiers comme Registry Explorer, RegScanner, Regshot et Process Monitor completent l'arsenal.
reg.exe : la ligne de commande¶
Outil en ligne de commande integre a Windows. Ideal pour les scripts et l'automatisation.
Lecture¶
rem Lire une valeur specifique
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
ProductName REG_SZ Windows 11 Pro
rem Lister toutes les valeurs d'une cle
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
SystemRoot REG_SZ C:\Windows
BuildBranch REG_SZ ni_release
CurrentBuild REG_SZ 22631
ProductName REG_SZ Windows 11 Pro
...
HKEY_LOCAL_MACHINE\SOFTWARE\MonApp
(Default) REG_SZ Mon Application
End of search: 1 match(es) found.
reg flags¶
reg flags affiche ou modifie les flags de virtualisation UAC d'une cle. En diagnostic, le mode le plus utile est QUERY.
Les flags possibles :
| Flag | Effet |
|---|---|
DONT_VIRTUALIZE | Empêche la virtualisation UAC pour la clé |
DONT_SILENT_FAIL | Évite l'échec silencieux en cas d'accès refusé |
RECURSE_FLAG | Applique le comportement de manière récursive |
Cas d'usage typique : une ancienne application tente d'ecrire dans HKLM, mais l'écriture finit dans le magasin virtuel utilisateur :
Diagnostic UAC
Si un programme voit une valeur que Regedit ne montre pas sous HKLM, vérifiez VirtualStore et les flags de virtualisation de la clé.
Ecriture¶
rem Creer ou modifier une valeur REG_SZ
reg add "HKCU\Software\MonApp" /v Param /t REG_SZ /d "valeur" /f
Le flag /f
Le flag /f (force) supprime la demande de confirmation. Sans ce flag, reg.exe vous demande "Etes-vous sur ?". Dans un script, utilisez toujours /f. En mode interactif, retirez-le pour eviter les erreurs.
Sauvegarde et restauration¶
reg save vs reg export
reg export cree un fichier .reg texte lisible et modifiable. reg save cree un fichier .hiv binaire brut (copie exacte de la ruche). Utilisez export pour des sauvegardes partielles et save pour des sauvegardes completes de ruche.
Codes d'erreur courants de reg.exe¶
| Code | Signification | Cause frequente |
|---|---|---|
0 | Succes | — |
1 | Erreur generique | Cle inexistante, acces refuse, syntaxe invalide |
2 | Cle ou valeur introuvable | Chemin incorrect ou cle supprimee |
5 | Acces refuse | Permissions insuffisantes ou cle protegee par TrustedInstaller |
En resume
reg.exe couvre tous les besoins : query pour lire, add pour ecrire, delete pour supprimer, export/import pour le format texte .reg, et save/restore pour le format binaire .hiv. Le flag /f supprime les confirmations.
PowerShell : le registre comme un disque¶
PowerShell expose les ruches du registre comme des lecteurs (HKLM:, HKCU:). Vous naviguez dedans exactement comme dans un systeme de fichiers.
Navigation et lecture¶
# Navigate like a file system
Set-Location HKLM:\SOFTWARE\Microsoft
# List subkeys (like 'dir')
Get-ChildItem HKLM:\SOFTWARE\Microsoft | Select-Object -First 5
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
Name Property
---- --------
.NETFramework ...
Active Setup ...
ASP.NET ...
Assistance ...
AuthHost ...
# Read all values of a key
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" |
Select-Object ProductName, CurrentBuild
# Read a single value
Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName
Ecriture et suppression¶
# Create or update a value
Set-ItemProperty -Path "HKCU:\Software\MonApp" -Name "Activer" -Value 1 -Type DWord
# Delete a value
Remove-ItemProperty -Path "HKCU:\Software\MonApp" -Name "Activer"
# Delete a key and everything inside
Remove-Item -Path "HKCU:\Software\MonApp" -Recurse
Acceder aux autres ruches¶
Par defaut, seuls HKLM: et HKCU: sont disponibles. Pour acceder a HKU ou d'autres ruches :
# Create a PSDrive for HKEY_USERS
New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
# Now you can browse it
Get-ChildItem HKU:\ | Select-Object Name
Name
----
HKEY_USERS\.DEFAULT
HKEY_USERS\S-1-5-18
HKEY_USERS\S-1-5-19
HKEY_USERS\S-1-5-20
HKEY_USERS\S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1001
Commandes PowerShell de base
PowerShell traite le registre comme un systeme de fichiers. Get-ChildItem liste les sous-cles, Get-ItemProperty lit les valeurs, Set-ItemProperty ecrit, Remove-Item supprime. Creez un PSDrive pour acceder aux ruches autres que HKLM et HKCU.
PowerShell 7 vs Windows PowerShell¶
Windows PowerShell 5.1 et PowerShell 7 accedent au registre via le même provider Registry. Pour les opérations de base (Get-ItemProperty, Set-ItemProperty, New-PSDrive), la logique reste donc identique.
La différence se voit surtout autour de l'écosystème :
| Besoin | Choix recommandé | Pourquoi |
|---|---|---|
| Lire ou modifier le registre local | PowerShell 7 ou Windows PowerShell 5.1 | Même provider Registry |
| Remoting SSH | PowerShell 7 | Support de -SSHTransport et meilleure portabilité |
| Scripts cross-platform | PowerShell 7 | Même moteur sur Windows, Linux et macOS |
Cmdlets GPO (Get-GPO, Backup-GPO) | Windows PowerShell 5.1 | Le module GroupPolicy n'est pas disponible nativement dans PS7 |
| Runbook mixte | PS7 + appel ponctuel à powershell.exe | Permet de garder PS7 tout en appelant un module legacy |
powershell.exe -NoProfile -Command "Import-Module GroupPolicy; Get-GPO -All | Select-Object DisplayName"
Recommandation pratique
Utilisez PowerShell 7 pour le remoting moderne et les opérations registre. Gardez Windows PowerShell 5.1 pour les cmdlets GPO et certains modules RSAT historiques.
En resume
PowerShell 7 et Windows PowerShell 5.1 lisent le registre de la même manière, mais pas le même écosystème de modules. PS7 est meilleur pour SSH et les scripts modernes ; Windows PowerShell 5.1 reste nécessaire pour GroupPolicy.
Acces distant¶
OpenSSH¶
Windows inclut ssh.exe comme client natif depuis Windows 10 1809. Le serveur sshd existe aussi comme fonctionnalite optionnelle et devient pertinent pour administrer des machines Windows depuis des postes Linux, macOS ou PowerShell 7.
ssh admin@server01 "reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v ProductName"
Pour des operations registre complexes, privilegiez PowerShell Remoting over SSH :
Enter-PSSession -HostName server01 -UserName admin
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Deux outils historiques restent utiles :
reg comparecompare deux sous-arbres de registre, pratique pour detecter une derive entre image de reference et poste cible ;regini.exemodifie le registre et les ACL en batch, mais sa syntaxe est cryptique : preferez PowerShell sauf contrainte legacy.
Pour la configuration complete d'OpenSSH et le choix WinRM vs SSH, voir PowerShell Remoting.
En resume
ssh.exepermet d'executer rapidementreg querya distance sans WinRM.- Pour les operations serieuses, utilisez PowerShell 7 remoting over SSH.
reg compareest utile pour comparer deux branches registre.regini.exeexiste encore pour les cas legacy, mais PowerShell reste preferable.
Matrice de decision : acces distant au registre¶
| Methode | Protocole | Prerequis | Cas d'usage |
|---|---|---|---|
Invoke-Command -ComputerName | WinRM (5985/5986) | WinRM actif, firewall ouvert | Parc AD homogene |
Enter-PSSession -SSHTransport | SSH (22) | OpenSSH Server, PowerShell 7 | Environnement hybride |
reg.exe \\computer | RPC/SMB | Service Remote Registry | Requete ponctuelle legacy |
[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey() | RPC | Service Remote Registry | Script .NET |
CIM (Get-CimInstance StdRegProv) | WinRM ou DCOM | WMI/CIM disponible | Inventaire massif |
Remote Registry
Le service Remote Registry est souvent désactivé, et c'est généralement sain. Préférez WinRM ou SSH sauf contrainte legacy explicite.
API de programmation¶
API Win32 (C/C++)¶
Les fonctions principales pour manipuler le registre depuis du code natif :
| Fonction | Role |
|---|---|
RegOpenKeyEx | Ouvrir une cle existante |
RegCreateKeyEx | Creer une cle (ou ouvrir si elle existe) |
RegSetValueEx | Ecrire une valeur |
RegQueryValueEx | Lire une valeur |
RegDeleteKey | Supprimer une cle |
RegDeleteValue | Supprimer une valeur |
RegEnumKeyEx | Enumerer les sous-cles |
RegEnumValue | Enumerer les valeurs |
RegNotifyChangeKeyValue | Surveiller les modifications d'une cle |
RegCloseKey | Fermer un handle de cle |
Toujours fermer les handles
Chaque appel a RegOpenKeyEx ou RegCreateKeyEx ouvre un handle. Si vous oubliez de le fermer avec RegCloseKey, vous creez une fuite de ressources. C'est comme ouvrir un robinet sans jamais le refermer.
API .NET (C#)¶
L'espace de noms Microsoft.Win32 fournit les classes Registry et RegistryKey :
using Microsoft.Win32;
// Read a value
using RegistryKey key = Registry.LocalMachine.OpenSubKey(
@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
string productName = key?.GetValue("ProductName") as string;
// productName = "Windows 11 Pro"
// Write a value
using RegistryKey appKey = Registry.CurrentUser.CreateSubKey(@"Software\MonApp");
appKey.SetValue("Activer", 1, RegistryValueKind.DWord);
Le mot-cle using
Le using dans using RegistryKey garantit que le handle est automatiquement ferme a la fin du bloc. C'est l'equivalent .NET de RegCloseKey.
En resume
- L'API Win32 (C/C++) utilise des fonctions comme
RegOpenKeyEx,RegQueryValueExetRegSetValueEx - L'API .NET (C#) fournit les classes
RegistryetRegistryKeydansMicrosoft.Win32 - Dans les deux cas, chaque handle ouvert doit etre ferme (
RegCloseKeyouusing) pour eviter les fuites de ressources
Format de fichier .reg¶
Les fichiers .reg sont des fichiers texte permettant d'importer et d'exporter des donnees du registre. Vous pouvez les creer manuellement ou les generer avec reg export.
Exemple complet commente¶
Windows Registry Editor Version 5.00
; This is a comment — configuration for MonApp
[HKEY_CURRENT_USER\Software\MonApp]
"ParamTexte"="valeur texte"
"Activer"=dword:00000001
"Compteur64"=qword:00000000000003e8
"DonneesBinaires"=hex:48,65,6c,6c,6f
"ListeChaines"=hex(7):50,00,72,00,65,00,6d,00,69,00,65,00,72,00,00,00,\
44,00,65,00,75,00,78,00,69,00,e8,00,6d,00,65,00,00,00,00,00
; Delete a specific value (dash after equals)
[HKEY_CURRENT_USER\Software\MonApp]
"AncienParametre"=-
; Delete an entire key (dash before the path)
[-HKEY_CURRENT_USER\Software\AncienneApp]
Table de correspondance des prefixes¶
| Prefixe dans le fichier .reg | Type du registre |
|---|---|
"texte" | REG_SZ |
dword:00000001 | REG_DWORD |
qword:00000000000003e8 | REG_QWORD |
hex:48,65,6c,6c,6f | REG_BINARY |
hex(2):... | REG_EXPAND_SZ |
hex(7):... | REG_MULTI_SZ |
Ligne de continuation
Les lignes longues (comme hex(7):) peuvent etre coupees avec un \ en fin de ligne. Le contenu continue sur la ligne suivante, indente de 2 espaces.
Double-clic = import
Double-cliquer sur un fichier .reg l'importe immediatement dans le registre (apres confirmation). Ne double-cliquez jamais sur un fichier .reg dont vous ne connaissez pas le contenu. Ouvrez-le d'abord dans un editeur de texte.
En resume
Vous avez 4 facons d'acceder au registre : Regedit (graphique), reg.exe (ligne de commande), PowerShell (scriptable) et les API (C/C++, .NET). Les fichiers .reg permettent d'echanger des configurations sous forme de texte lisible. Chaque outil a ses forces : Regedit pour l'exploration, reg.exe pour les scripts batch, PowerShell pour l'automatisation avancee, et les API pour les applications.