Registre et Gestion des Pilotes

Master Windows 11 25H2 Optimisé

Auteur : Ayi NEDJIMI Consultants

Optimisations avancées du registre

Voici des optimisations supplémentaires du registre pour améliorer les performances et la confidentialité :

# Désactiver Windows Copilot (nouveau dans Windows 11)
New-Item -Path "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot" -Force
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -Value 1 -Force -ErrorAction SilentlyContinue

# Désactiver les widgets et actualités Windows
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Dsh" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Dsh" -Name "AllowNewsAndInterests" -Value 0 -Force

# Désactiver les suggestions de recherche Bing
Set-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\Explorer" -Name "DisableSearchBoxSuggestions" -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer" -Name "DisableSearchBoxSuggestions" -Value 1 -Force -ErrorAction SilentlyContinue

# Désactiver Cortana
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" -Name "AllowCortana" -Value 0 -Force

# Désactiver les suggestions du menu démarrer
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SystemPaneSuggestionsEnabled" -Value 0 -Force
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338388Enabled" -Value 0 -Force
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338389Enabled" -Value 0 -Force

# Désactiver les publicités dans l'explorateur
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowSyncProviderNotifications" -Value 0 -Force

# Désactiver le tracking de localisation
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Name "Value" -Value "Deny" -Force

# Désactiver Windows Tips
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableSoftLanding" -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableWindowsConsumerFeatures" -Value 1 -Force

# Optimiser le délai de fermeture des applications
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "AutoEndTasks" -Value "1"
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -Value "1000"
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -Value "2000"
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "LowLevelHooksTimeout" -Value "1000"

# Désactiver les notifications de sécurité Windows inutiles
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender Security Center\Notifications" -Name "DisableNotifications" -Value 1 -ErrorAction SilentlyContinue

# Désactiver le partage de Wi-Fi
Set-ItemProperty -Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Name "Value" -Value 0

# Désactiver le suivi des applications
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Start_TrackProgs" -Value 0

# Désactiver les suggestions de recherche
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search" -Name "BingSearchEnabled" -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search" -Name "CortanaConsent" -Value 0

# Optimiser l'Explorateur Windows
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Value 1  # Ouvrir sur Ce PC
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "Hidden" -Value 1  # Afficher les fichiers cachés
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Value 0  # Afficher les extensions
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowSuperHidden" -Value 1  # Afficher les fichiers système

# Désactiver le mode tablette automatique
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ImmersiveShell" -Name "SignInMode" -Value 1

# Accélérer le temps de démarrage
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Value "2000"
bcdedit /timeout 3

# Désactiver le verrouillage automatique après inactivité (optionnel)
powercfg /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOCONLOCK 0

Nettoyage et optimisation du registre

Nettoyage manuel du registre

Le registre Windows accumule des entrées obsolètes au fil du temps. Voici les principales zones à nettoyer :

# Nettoyer les MUICache (cache d'interface utilisateur)
Remove-Item -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache" -Recurse -Force -ErrorAction SilentlyContinue

# Nettoyer l'historique des fenêtres ouvertes
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU" -Recurse -Force -ErrorAction SilentlyContinue

# Nettoyer l'historique Run
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" -Recurse -Force -ErrorAction SilentlyContinue

# Nettoyer les clés de désinstallation orphelines
$uninstallKeys = @(
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
    "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
)

foreach ($key in $uninstallKeys) {
    Get-ChildItem -Path $key -ErrorAction SilentlyContinue | ForEach-Object {
        $displayName = (Get-ItemProperty -Path $_.PSPath -Name "DisplayName" -ErrorAction SilentlyContinue).DisplayName
        if ([string]::IsNullOrEmpty($displayName)) {
            Remove-Item -Path $_.PSPath -Recurse -Force -ErrorAction SilentlyContinue
        }
    }
}

# Nettoyer les extensions de shell obsolètes
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached" -Recurse -Force -ErrorAction SilentlyContinue

Compactage du registre

Le compactage du registre Windows permet de réduire sa taille et d'améliorer les performances d'accès. Cette opération s'effectue en deux étapes :

# Sauvegarder d'abord les ruches du registre
reg save "HKLM\SOFTWARE" "C:\Windows\Temp\SOFTWARE.hiv" /y
reg save "HKLM\SYSTEM" "C:\Windows\Temp\SYSTEM.hiv" /y
reg save "HKLM\SAM" "C:\Windows\Temp\SAM.hiv" /y
reg save "HKLM\SECURITY" "C:\Windows\Temp\SECURITY.hiv" /y
reg save "HKU\.DEFAULT" "C:\Windows\Temp\DEFAULT.hiv" /y

Pour un compactage complet, utilisez l'outil intégré Windows :

# Compacter le registre en utilisant l'outil natif (nécessite un redémarrage)
# Cette méthode est la plus sûre et recommandée
Start-Process -FilePath "compact.exe" -ArgumentList "/c /s:%windir%\System32\config" -Wait -NoNewWindow
💡 Note : Windows 10/11 défragmente automatiquement le registre lors des redémarrages. Cette opération manuelle est optionnelle mais peut améliorer les performances sur des systèmes ayant subi de nombreuses modifications.

Gestion des pilotes

Mise à jour des pilotes

Avant de créer le master, installez les derniers pilotes constructeur pour tous les composants matériels cibles. Privilégiez les pilotes certifiés WHQL et évitez les suites logicielles bloatées des fabricants.

# Lister les pilotes installés
Get-WindowsDriver -Online | Select-Object Driver, ClassName, ProviderName, Date, Version | Sort-Object Date -Descending

# Exporter les pilotes installés
Export-WindowsDriver -Online -Destination "C:\DriversBackup"

# Mettre à jour tous les pilotes via Windows Update (si connecté)
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate -Install -UpdateType Driver -AcceptAll

Bloquer les mises à jour automatiques de pilotes

Pour éviter que Windows Update n'installe des pilotes génériques ou obsolètes après le déploiement :

# Bloquer les pilotes automatiques de Windows Update
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching" -Name "SearchOrderConfig" -Value 0 -PropertyType DWORD -Force

# Alternative via stratégie de groupe
# Computer Configuration > Administrative Templates > Windows Components > Windows Update > Do not include drivers with Windows Updates
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -Value 1 -Force

Nettoyage des versions obsolètes de pilotes

Le magasin de pilotes (DriverStore - C:\Windows\System32\DriverStore\FileRepository) accumule les anciennes versions de pilotes au fil du temps. Pour nettoyer les pilotes obsolètes :

⚠️ Attention importante : Supprimez uniquement les pilotes qui ne sont pas actuellement utilisés par un périphérique actif. L'utilisation de /uninstall et /delete-driver avec le paramètre /force ou /d doit être faite avec précaution.
# Lister les packages de pilotes avec détails
Write-Host "Liste des pilotes installés (pour vérification)..." -ForegroundColor Cyan
pnputil /enum-drivers

# Méthode 1 : Suppression automatique des pilotes non attachés (la plus sûre)
Write-Host "`nTentative de suppression des packages de pilotes non utilisés..." -ForegroundColor Yellow

pnputil /enum-drivers | Select-String "Published Name" | ForEach-Object {
    $Name = $_.ToString().Split(':')[-1].Trim()

    # Tente de supprimer le pilote s'il n'est pas utilisé par un périphérique actif
    pnputil /delete-driver $Name /uninstall /d 2>$null | Out-Null
}

Write-Host "Le retrait des versions obsolètes des pilotes est terminé." -ForegroundColor Green

# Nettoyer également via DISM (méthode complémentaire)
Write-Host "`nNettoyage des pilotes via DISM..." -ForegroundColor Yellow
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
💡 Note : Si vous rencontrez des messages d'erreur lors de la suppression, c'est généralement normal. Cela signifie que :
  • Le pilote est actuellement utilisé par un périphérique actif
  • Le pilote est un pilote système critique
  • Le pilote est protégé par Windows

Pour un nettoyage plus visuel et sécurisé, utilisez l'outil Driver Store Explorer (RAPR) qui permet d'identifier et supprimer les pilotes en double ou obsolètes tout en conservant les versions actives via une interface graphique intuitive.