
Windows 11 : optimisation avancée et hardening complet
Télémétrie, services, registre, stratégies de groupe, scripts PowerShell : toutes les optimisations avancées pour un Windows 11 performant et discret.
Windows 11 : optimisation avancée et hardening complet
Ce guide s'adresse à ceux qui savent ouvrir un terminal sans trembler. On va désactiver la télémétrie via le registre et les GPO, couper les services gourmands, virer le bloatware en masse, et finir avec un script PowerShell qui fait tout d'un coup.
Toutes les commandes ont été testées sur Windows 11 24H2 (Build 26100). Elles fonctionnent aussi sur 23H2.
Prérequis
- Windows 11 Pro ou Enterprise (certaines GPO nécessitent Pro minimum)
- Compte administrateur local
- PowerShell 5.1+ (intégré) ou Windows Terminal
- Un point de restauration frais (on va modifier le registre)
Création du point de restauration en PowerShell :
## Activer la protection système si désactivée
Enable-ComputerRestore -Drive "C:\"
## Créer le point de restauration
Checkpoint-Computer -Description "Avant optimisation Windows 11" -RestorePointType MODIFY_SETTINGS1. Désactivation complète de la télémétrie
Via le registre
Ouvrez PowerShell en administrateur et exécutez :
## Désactiver la télémétrie (niveau 0 = Security, minimum possible)
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Value 0 -PropertyType DWord -Force
## Désactiver l'envoi de données de diagnostic
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowDeviceNameInTelemetry" -Value 0 -PropertyType DWord -Force
## Désactiver le Customer Experience Improvement Program
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows" -Name "CEIPEnable" -Value 0 -PropertyType DWord -Force
## Désactiver Application Telemetry
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppCompat" -Name "AITEnable" -Value 0 -PropertyType DWord -Force
## Désactiver les rapports d'erreurs Windows
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting" -Name "Disabled" -Value 1 -PropertyType DWord -Force
## Désactiver l'identifiant publicitaire
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" -Name "DisabledByGroupPolicy" -Value 1 -PropertyType DWord -ForceVia les stratégies de groupe (GPO)
Si vous êtes sur Windows 11 Pro ou Enterprise, gpedit.msc donne un contrôle plus fin :
Configuration ordinateur > Modèles d'administration > Composants Windows > Collecte des données et versions d'évaluation
→ Autoriser les données de diagnostic : Désactivé
→ Ne pas afficher les notifications de commentaires : Activé
Configuration ordinateur > Modèles d'administration > Composants Windows > Rapports d'erreurs Windows
→ Désactiver le rapport d'erreurs Windows : Activé
Configuration ordinateur > Modèles d'administration > Système > Gestion de la communication Internet
→ Désactiver la participation au programme d'amélioration de l'expérience utilisateur : ActivéDésactivation des services de télémétrie
## Service principal de télémétrie
Stop-Service -Name "DiagTrack" -Force
Set-Service -Name "DiagTrack" -StartupType Disabled
## Service de routage des messages push
Stop-Service -Name "dmwappushservice" -Force
Set-Service -Name "dmwappushservice" -StartupType Disabled
## Service de diagnostic
Stop-Service -Name "diagnosticshub.standardcollector.service" -Force -ErrorAction SilentlyContinue
Set-Service -Name "diagnosticshub.standardcollector.service" -StartupType Disabled -ErrorAction SilentlyContinueBloquer les serveurs de télémétrie via le fichier hosts
Approche complémentaire : empêcher les connexions sortantes vers les serveurs de collecte Microsoft.
$hostsPath = "$env:SystemRoot\System32\drivers\etc\hosts"
$telemetryHosts = @(
"0.0.0.0 vortex.data.microsoft.com",
"0.0.0.0 vortex-win.data.microsoft.com",
"0.0.0.0 telecommand.telemetry.microsoft.com",
"0.0.0.0 oca.telemetry.microsoft.com",
"0.0.0.0 sqm.telemetry.microsoft.com",
"0.0.0.0 watson.telemetry.microsoft.com",
"0.0.0.0 settings-sandbox.data.microsoft.com"
)
## Ajouter les entrées (sans doublon)
$currentHosts = Get-Content $hostsPath
foreach ($entry in $telemetryHosts) {
if ($currentHosts -notcontains $entry) {
Add-Content -Path $hostsPath -Value $entry
}
}
## Vider le cache DNS
ipconfig /flushdns⚠️ Cette méthode peut interférer avec certaines fonctionnalités de Windows Update. Surveillez vos mises à jour après application.
2. Suppression du bloatware en masse
Lister les applis préinstallées
## Voir toutes les applis installées pour l'utilisateur courant
Get-AppxPackage | Select-Object Name, PackageFullName | Sort-Object Name
## Voir celles installées pour tous les utilisateurs (provisionnées)
Get-AppxProvisionedPackage -Online | Select-Object DisplayName, PackageNameScript de suppression ciblée
## Liste des applis à supprimer (ajustez selon vos besoins)
$bloatware = @(
"Clipchamp.Clipchamp",
"Microsoft.BingNews",
"Microsoft.BingWeather",
"Microsoft.GamingApp",
"Microsoft.GetHelp",
"Microsoft.Getstarted",
"Microsoft.MicrosoftOfficeHub",
"Microsoft.MicrosoftSolitaireCollection",
"Microsoft.People",
"Microsoft.PowerAutomateDesktop",
"Microsoft.Todos",
"Microsoft.WindowsAlarms",
"microsoft.windowscommunicationsapps",
"Microsoft.WindowsFeedbackHub",
"Microsoft.WindowsMaps",
"Microsoft.WindowsSoundRecorder",
"Microsoft.Xbox.TCUI",
"Microsoft.XboxGameOverlay",
"Microsoft.XboxGamingOverlay",
"Microsoft.XboxIdentityProvider",
"Microsoft.XboxSpeechToTextOverlay",
"Microsoft.YourPhone",
"Microsoft.ZuneMusic",
"Microsoft.ZuneVideo",
"MicrosoftCorporationII.MicrosoftFamily",
"MicrosoftCorporationII.QuickAssist",
"MicrosoftTeams"
)
foreach ($app in $bloatware) {
# Supprimer pour l'utilisateur courant
Get-AppxPackage -Name $app -ErrorAction SilentlyContinue | Remove-AppxPackage -ErrorAction SilentlyContinue
# Supprimer le provisionnement (empêche la réinstallation pour les nouveaux utilisateurs)
Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -eq $app } | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
Write-Host "Traité : $app" -ForegroundColor Green
}⚠️ Ne supprimez jamais ces packages : Microsoft.WindowsStore, Microsoft.WindowsTerminal, Microsoft.DesktopAppInstaller, Microsoft.VCLibs*, Microsoft.UI.Xaml*. Leur suppression casse des fonctionnalités système.
3. Désactivation des services inutiles
## Services à désactiver sur un poste de travail standard
$servicesToDisable = @(
"DiagTrack", # Télémétrie
"dmwappushservice", # Push WAP
"MapsBroker", # Cartes téléchargées
"lfsvc", # Géolocalisation
"RemoteRegistry", # Modification registre à distance
"Fax", # Service de fax
"WMPNetworkSvc", # Partage réseau Windows Media Player
"RetailDemo", # Mode démonstration
"wisvc", # Windows Insider
"WerSvc" # Rapports d'erreurs Windows
)
foreach ($svc in $servicesToDisable) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($service) {
Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue
Set-Service -Name $svc -StartupType Disabled
Write-Host "Désactivé : $svc ($($service.DisplayName))" -ForegroundColor Yellow
} else {
Write-Host "Non trouvé : $svc" -ForegroundColor DarkGray
}
}Services à passer en Manuel (démarrage à la demande)
Certains services n'ont pas besoin de tourner en permanence mais restent utiles ponctuellement :
$servicesToManual = @(
"SysMain", # Superfetch : préchargement applis, lourd sur HDD
"WSearch", # Indexation Windows Search
"TabletInputService", # Clavier tactile (inutile sur desktop)
"Spooler" # File d'impression (si pas d'imprimante)
)
foreach ($svc in $servicesToManual) {
Set-Service -Name $svc -StartupType Manual -ErrorAction SilentlyContinue
Write-Host "Passé en Manuel : $svc" -ForegroundColor Cyan
}4. Optimisations du registre
## Désactiver Cortana
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name "AllowCortana" -Value 0 -PropertyType DWord -Force
## Désactiver les suggestions dans le menu Démarrer
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SystemPaneSuggestionsEnabled" -Value 0 -PropertyType DWord -Force
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338388Enabled" -Value 0 -PropertyType DWord -Force
## Désactiver les applications silencieusement installées
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SilentInstalledAppsEnabled" -Value 0 -PropertyType DWord -Force
## Désactiver les tips et suggestions Windows
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SoftLandingEnabled" -Value 0 -PropertyType DWord -Force
## Désactiver le suivi des lancements d'applications
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Start_TrackProcs" -Value 0 -PropertyType DWord -Force
## Désactiver la collecte de données de saisie
New-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Input\TIPC" -Name "Enabled" -Value 0 -PropertyType DWord -Force
## Activer le dernier plan d'alimentation haute performance
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
## Réduire le délai de fermeture des applications au shutdown (de 5000ms à 2000ms)
New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -Value "2000" -PropertyType String -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Value "2000" -PropertyType String -Force5. Optimisation réseau
## Désactiver Nagle's Algorithm (réduit la latence réseau, utile pour le gaming)
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\MSMQ\Parameters" -Name "TCPNoDelay" -Value 1 -PropertyType DWord -Force
## Désactiver la limitation de bande passante réservée aux mises à jour
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Psched" -Name "NonBestEffortLimit" -Value 0 -PropertyType DWord -Force
## Désactiver l'optimisation de livraison P2P (Windows Update partagé entre PCs)
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization" -Name "DODownloadMode" -Value 0 -PropertyType DWord -Force6. Nettoyage des tâches planifiées de télémétrie
## Lister les tâches de télémétrie Microsoft
Get-ScheduledTask -TaskPath "\Microsoft\Windows\*" | Where-Object {
$_.TaskName -match "Consolidator|UsbCeip|DmClient|KernelCeipTask|Proxy|QueueReporting"
} | Format-Table TaskName, State, TaskPath
## Désactiver les tâches de télémétrie
$telemetryTasks = @(
"\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser",
"\Microsoft\Windows\Application Experience\ProgramDataUpdater",
"\Microsoft\Windows\Autochk\Proxy",
"\Microsoft\Windows\Customer Experience Improvement Program\Consolidator",
"\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip",
"\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask",
"\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector",
"\Microsoft\Windows\Feedback\Siuf\DmClient",
"\Microsoft\Windows\Windows Error Reporting\QueueReporting"
)
foreach ($task in $telemetryTasks) {
Disable-ScheduledTask -TaskName $task -ErrorAction SilentlyContinue
Write-Host "Tâche désactivée : $task" -ForegroundColor Yellow
}7. Script d'optimisation complet
Pour ceux qui veulent tout appliquer d'un coup, voici un script consolidé. Enregistrez-le en .ps1 et exécutez-le en administrateur.
## optimize-win11.ps1
## Script d'optimisation Windows 11 - Call-Informatique.fr
## Exécuter en tant qu'administrateur
#Requires -RunAsAdministrator
Write-Host "=== Optimisation Windows 11 ==" -ForegroundColor Cyan
Write-Host "Création du point de restauration..." -ForegroundColor White
Enable-ComputerRestore -Drive "C:\" -ErrorAction SilentlyContinue
Checkpoint-Computer -Description "Pre-optimisation-$(Get-Date -Format 'yyyyMMdd')" -RestorePointType MODIFY_SETTINGS -ErrorAction SilentlyContinue
## —- TELEMETRIE —-
Write-Host "`n[1/5] Désactivation de la télémétrie..." -ForegroundColor Green
$regPaths = @{
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" = @{ "AllowTelemetry" = 0; "AllowDeviceNameInTelemetry" = 0 }
"HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows" = @{ "CEIPEnable" = 0 }
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppCompat" = @{ "AITEnable" = 0 }
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting" = @{ "Disabled" = 1 }
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" = @{ "DisabledByGroupPolicy" = 1 }
}
foreach ($path in $regPaths.Keys) {
if (-not (Test-Path $path)) { New-Item -Path $path -Force | Out-Null }
foreach ($name in $regPaths[$path].Keys) {
New-ItemProperty -Path $path -Name $name -Value $regPaths[$path][$name] -PropertyType DWord -Force | Out-Null
}
}
## —- SERVICES —-
Write-Host "[2/5] Désactivation des services inutiles..." -ForegroundColor Green
@("DiagTrack","dmwappushservice","MapsBroker","lfsvc","RemoteRegistry","Fax","RetailDemo","wisvc","WerSvc") | ForEach-Object {
Stop-Service -Name $_ -Force -ErrorAction SilentlyContinue
Set-Service -Name $_ -StartupType Disabled -ErrorAction SilentlyContinue
}
@("SysMain","WSearch") | ForEach-Object {
Set-Service -Name $_ -StartupType Manual -ErrorAction SilentlyContinue
}
## —- BLOATWARE —-
Write-Host "[3/5] Suppression du bloatware..." -ForegroundColor Green
@(
"Clipchamp.Clipchamp","Microsoft.BingNews","Microsoft.BingWeather",
"Microsoft.GamingApp","Microsoft.GetHelp","Microsoft.Getstarted",
"Microsoft.MicrosoftOfficeHub","Microsoft.MicrosoftSolitaireCollection",
"Microsoft.People","Microsoft.PowerAutomateDesktop","Microsoft.Todos",
"Microsoft.WindowsFeedbackHub","Microsoft.WindowsMaps",
"Microsoft.Xbox.TCUI","Microsoft.XboxGameOverlay",
"Microsoft.XboxGamingOverlay","Microsoft.XboxSpeechToTextOverlay",
"Microsoft.YourPhone","Microsoft.ZuneMusic","Microsoft.ZuneVideo",
"MicrosoftTeams"
) | ForEach-Object {
Get-AppxPackage -Name $_ -ErrorAction SilentlyContinue | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -eq $_ } | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
}
## —- REGISTRE —-
Write-Host "[4/5] Optimisations registre..." -ForegroundColor Green
## Désactiver Cortana, pubs, suggestions
$userReg = @{
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" = @{
"SystemPaneSuggestionsEnabled" = 0
"SubscribedContent-338388Enabled" = 0
"SilentInstalledAppsEnabled" = 0
"SoftLandingEnabled" = 0
}
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" = @{ "Start_TrackProcs" = 0 }
"HKCU:\SOFTWARE\Microsoft\Input\TIPC" = @{ "Enabled" = 0 }
}
foreach ($path in $userReg.Keys) {
if (-not (Test-Path $path)) { New-Item -Path $path -Force | Out-Null }
foreach ($name in $userReg[$path].Keys) {
New-ItemProperty -Path $path -Name $name -Value $userReg[$path][$name] -PropertyType DWord -Force | Out-Null
}
}
## Réduire les délais de shutdown
New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -Value "2000" -PropertyType String -Force | Out-Null
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Value "2000" -PropertyType String -Force | Out-Null
## Plan haute performance
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 2>$null
## —- TACHES PLANIFIEES —-
Write-Host "[5/5] Désactivation des tâches de télémétrie..." -ForegroundColor Green
@(
"\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser",
"\Microsoft\Windows\Customer Experience Improvement Program\Consolidator",
"\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip",
"\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector"
) | ForEach-Object {
Disable-ScheduledTask -TaskName $_ -ErrorAction SilentlyContinue | Out-Null
}
Write-Host "`n=== Optimisation terminée ==" -ForegroundColor Cyan
Write-Host "Redémarrez votre PC pour appliquer tous les changements." -ForegroundColor White
Write-Host "En cas de problème, utilisez le point de restauration créé au début." -ForegroundColor YellowDépannage
Windows Update ne fonctionne plus
Si vous avez modifié le fichier hosts (section télémétrie), certains domaines Microsoft bloqués peuvent interférer avec les mises à jour. Retirez les entrées du fichier hosts et relancez :
## Vider le cache DNS après modification du fichier hosts
ipconfig /flushdns
## Redémarrer le service Windows Update
Restart-Service wuauservLe Microsoft Store ne charge plus
Vérifiez que vous n'avez pas supprimé Microsoft.WindowsStore :
Get-AppxPackage *WindowsStore*Si le package est absent, réinstallez-le :
Get-AppxPackage -AllUsers *WindowsStore* | ForEach-Object { Add-AppxPackage -Register "$($_.InstallLocation)\AppxManifest.xml" -DisableDevelopmentMode }Un service désactivé cause un problème
Pour réactiver un service :
Set-Service -Name "NomDuService" -StartupType Automatic
Start-Service -Name "NomDuService"Rollback complet
Utilisez le point de restauration :
- Redémarrez en mode sans échec (Maj + Redémarrer)
- Dépannage > Options avancées > Restauration du système
- Sélectionnez le point créé avant optimisation
Ou via PowerShell (nécessite un redémarrage) :
Get-ComputerRestorePoint | Format-Table SequenceNumber, Description, CreationTimeAller plus loin
Pour les utilisateurs avancés qui veulent un outil graphique complet, le projet open source WinUtil de Chris Titus Tech offre une interface pour appliquer ces optimisations et bien d'autres. Exécution en une ligne :
irm christitus.com/win | iex⚠️ Comme tout script tiers, lisez le code source avant exécution. Ce script modifie de nombreux paramètres système.
À lire aussi
Serveur mail Postfix + Dovecot : config avancée et hardening
Configuration complète et sécurisée d'un serveur mail Postfix 3.11 + Dovecot sur Ubuntu : TLS, DKIM, DMARC, antispam, virtual mailboxes et scripts d'automatisation.
Créer son serveur mail avec Postfix et Dovecot
Guide pas à pas pour installer et configurer votre propre serveur mail sur Ubuntu avec Postfix, Dovecot, SSL et authentification email complète.
NAS Synology DSM 7 : configuration avancée et sécurisation
Configuration complète d'un NAS Synology sous DSM 7 : RAID, accès SSH, certificat SSL, fail2ban, Hyper Backup et accès VPN sécurisé.