DossierRisque : Ne pas toucher
ServiceProfiles C:\Windows\ServiceProfiles
C:\Windows\ServiceProfiles : profils des comptes Service local et Service réseau (AppData, NTUSER.DAT, caches, vidages en mode utilisateur des services).
À quoi ça sert
ServiceProfiles contient les profils des comptes sous lesquels tournent de nombreux services Windows : Service local (LocalService) et Service réseau (NetworkService). Comme un utilisateur interactif, ces comptes ont besoin d’un emplacement pour leurs données, leur ruche du Registre et leurs fichiers temporaires. Le compte Système a le sien ailleurs, dans System32\config\systemprofile.
Ce qu’il contient
- Un sous-dossier par compte,
LocalServiceetNetworkService, avec une structure de profil (AppData,NTUSER.DAT…). - Des vidages en mode utilisateur quand un service plante : ils sont écrits dans le profil du compte de service concerné, donc ici pour ces deux comptes.
- Des caches de services : le cache de polices (
LocalService\AppData\Local\FontCache) et celui de l’Optimisation de la distribution (NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization), souvent les plus gros.
Risques et bonnes pratiques
- Supprimer ou déplacer un profil fait perdre leur configuration aux services concernés, voire les empêche de démarrer. Corrigez la cause d’un sous-dossier volumineux (service qui boucle, journalisation trop bavarde) plutôt que de purger à la main.
- Pour le cache de l’Optimisation de la distribution, la commande
Delete-DeliveryOptimizationCachele vide proprement. - Les droits d’accès isolent les comptes de service les uns des autres : ne les modifiez pas.
- Les vidages de services peuvent contenir des données sensibles : protégez-les comme tout vidage mémoire.
Commandes utiles
# En administrateur : taille de chaque profil de serviceGet-ChildItem "$env:windir\ServiceProfiles" -Directory | ForEach-Object { [pscustomobject]@{ Profil = $_.Name; SizeMB = [math]::Round((Get-ChildItem $_.FullName -Recurse -Force -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1MB, 1) } }
# Services qui s'exécutent sous ces deux comptesGet-CimInstance Win32_Service | Where-Object StartName -in 'NT AUTHORITY\LocalService', 'NT AUTHORITY\NetworkService' | Select-Object Name, StartName
# Vidages éventuels des servicesGet-ChildItem "$env:windir\ServiceProfiles\LocalService\AppData\Local\CrashDumps" -Force -ErrorAction SilentlyContinue