Les fichiers « verrouillés » dans le partage NETLOGON
(ex. un fond d’écran AD) peuvent bloquer vos mises à jour, sans impacter l’authentification. Voici une méthode éprouvée pour diagnostiquer, lever les verrous et établir des bonnes pratiques durables.
Vue d’ensemble
Le partage \\<domaine>\NETLOGON
pointe vers le dossier scripts de SYSVOL
sur chaque contrôleur de domaine (DC), typiquement C:\Windows\SYSVOL\sysvol\<domaine>\scripts
. Son contenu est répliqué entre DCs via DFSR (Distributed File System Replication). On y dépose des scripts de connexion, des fichiers de configuration… et parfois des ressources comme un fond d’écran d’entreprise.
Lorsqu’un fichier y est « verrouillé », il est temporairement indisponible en modification ou en remplacement parce qu’un processus détient un handle ouvert (script qui l’utilise, antivirus, indexeur, session utilisateur, etc.). Ce phénomène n’altère pas Kerberos ni la capacité du service Netlogon à authentifier ; en revanche, il peut retarder ou empêcher la distribution d’un nouveau fichier.
Pourquoi un fichier devient-il verrouillé ?
- Utilisation active par un poste client : un script de logon, un fond d’écran en cours d’affichage ou un exécutable référencé par une GPO maintiennent l’accès.
- Services côté DC : antivirus, moteur d’indexation, sauvegarde, ou un éditeur (bloc‑notes, PowerShell) ouvert par un administrateur sur le DC.
- Mécanismes SMB : verrous opportunistes (oplocks/leases) et sessions SMB qui conservent le handle pour optimiser les performances.
- Réplication DFSR : très rarement, un fichier en cours de staging ou une corruption peut provoquer des états bloquants et des événements DFSR (ex. 5002/5014).
Le changement d’image perturbe‑t‑il Active Directory ?
Non pour l’authentification (Kerberos/NTLM). Le dossier NETLOGON
héberge des scripts et fichiers distribués ; un verrou ou un fichier corrompu n’interrompt pas le service d’authentification mais peut empêcher l’exécution d’un script ou la mise à jour du fond d’écran. La bonne approche consiste à déployer la nouvelle image sous un nom différent et à ajuster la GPO pour pointer vers ce nouveau fichier ; la suppression de l’ancien ne se fait qu’après réplication confirmée.
Tableau synthétique des problèmes et solutions
Problème | Solutions pratiques / recommandations |
---|---|
Fichier verrouillé par un autre processus (script, antivirus, indexation, GPO…) | Identifier le processus : • Ressource Monitor : onglet CPU → Associated Handles, rechercher le nom de fichier. • Process Explorer ou handle.exe (Sysinternals) pour une recherche directe.• Audit Object Access (Event ID 4656/4658) pour tracer l’ouverture/fermeture. • Côté serveur : Get-SmbOpenFile pour lister les sessions SMB tenant le fichier. |
Verrou persistant empêchant le remplacement de l’image | 1) Faire fermer les sessions utilisant l’ancienne image ; 2) Exclure le chemin dans l’antivirus ou planifier la copie hors pics ; 3) En dernier ressort : redémarrer le service fautif ou le DC concerné (fenêtre de maintenance). |
Risque sur le fonctionnement AD | Aucune incidence sur Kerberos/Logon. Risque principal : scripts non exécutés ou image non distribuée si le fichier est corrompu/bloqué. Surveiller les journaux GPO et DFSR. |
Gestion préventive | Versionner & sauvegarder (Git ou robocopy /MIR vers un dépôt).Limiter taille & nombre de fichiers ; déporter les gros artefacts vers un partage DFS/File Server. Permissions NTFS strictes : Administrateurs & Système = Modification ; Domain Computers/Utilisateurs authentifiés = Lecture. Contrôle mensuel automatisé : script PowerShell qui tente une ouverture exclusive et alerte si échec. Documenter la fonction de chaque fichier pour un déploiement rapide sur un nouveau DC. |
Mise à jour de fond d’écran | Déployer la nouvelle image sous un nom différent (ex. wallpaper-2025.jpg ), mettre à jour la GPO (User Configuration → Policies → Administrative Templates → Desktop → Desktop Wallpaper), valider la réplication SYSVOL, puis supprimer l’ancienne image. |
Méthode fiable pour identifier et lever un verrou
Localiser rapidement le handle fautif
- Depuis le DC hébergeant le fichier : exécuter PowerShell en tant qu’administrateur et cibler le chemin exact.
# Lister les fichiers SMB ouverts sur le DC local
Get-SmbOpenFile |
Where-Object { $_.Path -match '\\\\.*\\NETLOGON\\.*(jpg|png|bmp|ico)$' } |
Select-Object FileId, Path, ClientUserName, ClientComputerName, SessionId, ContinuouslyAvailable
- Surveiller côté client : si le verrou vient d’un poste, demander la fermeture de session ou une actualisation GPO (
gpupdate /force
) après mise à jour. - Outils graphiques : Ressource Monitor, Process Explorer, ou
handle.exe
pour rechercher le fichier et afficher le processus propriétaire.
Fermer proprement la session SMB qui verrouille
Lorsqu’un verrou est confirmé, on peut libérer le handle sans redémarrage en fermant la session SMB ou le fichier ouvert côté serveur.
# Fermer un fichier spécifique par son FileId
$open = Get-SmbOpenFile | Where-Object { $_.Path -like '*\\NETLOGON\\wallpaper-2024.jpg' }
if ($open) { Close-SmbOpenFile -FileId $open.FileId -Force }
# (Option) Fermer toutes les ouvertures correspondantes
Get-SmbOpenFile |
Where-Object { $*.Path -like '*\NETLOGON\wallpaper-2024.jpg' } |
ForEach-Object { Close-SmbOpenFile -FileId $*.FileId -Force }
Bon à savoir : Close-SmbOpenFile
n’interrompt pas l’authentification ; il ferme le fichier côté serveur. Informez l’utilisateur si l’action peut affecter son affichage actuel (rechargement d’image).
Collecte multi‑DC et résolution à l’échelle
Dans un domaine avec plusieurs DCs, un verrou peut n’apparaître que sur certains nœuds. Le script ci‑dessous inventorie et libère, si souhaité, le fichier ciblé sur tous les DCs.
# Inventaire & (optionnel) libération des verrous NETLOGON sur tous les DCs
param(
[string]$NomFichier = 'wallpaper-2024.jpg',
[switch]$Liberer
)
$DCs = (Get-ADDomainController -Filter *).HostName
$pattern = "\\.*\NETLOGON\.*$([Regex]::Escape($NomFichier))"
foreach ($dc in $DCs) {
Write-Host "==== $dc ===="
try {
$opens = Invoke-Command -ComputerName $dc -ScriptBlock {
param($p) Get-SmbOpenFile | Where-Object { $_.Path -match $p }
} -ArgumentList $pattern
```
if (!$opens) { Write-Host "Aucun verrou."; continue }
$opens | Select-Object FileId, Path, ClientComputerName, ClientUserName, SessionId |
Format-Table -AutoSize
if ($Liberer) {
Invoke-Command -ComputerName $dc -ScriptBlock {
param($ids) $ids | ForEach-Object { Close-SmbOpenFile -FileId $_ -Force }
} -ArgumentList ($opens.FileId)
Write-Host "→ Verrous libérés sur $dc."
}
```
}
catch {
Write-Warning "Erreur sur $dc : $($_.Exception.Message)"
}
}
Arbre de décision opérationnel
- Le fichier est‑il en cours d’utilisation ? Oui → identifier la session (
Get-SmbOpenFile
) et planifier la libération (fermeture de session,Close-SmbOpenFile
, exclusion AV). - Le verrou provient‑il d’un service ? Oui → appliquer une exclusion (chemin SYSVOL/NETLOGON) ou une fenêtre de copie hors heures de pointe ; sinon redémarrer le service.
- Réplication DFSR en alerte ? Vérifier les journaux DFSR. Si backlog : corriger avant toute suppression.
- Besoin d’une mise à jour immédiate du fond d’écran ? Déployer sous nouveau nom, mettre à jour la GPO, forcer la réplication et le rafraîchissement des stratégies ; nettoyer l’ancien fichier ensuite.
Procédure sûre pour mettre à jour un fond d’écran AD
- Préparer l’image : format
.jpg
ou.bmp
, taille < 1 Mo si possible, nom versionné (ex.wallpaper-2025-10.jpg
). - Copier dans NETLOGON sous un nouveau nom :
\\<domaine>\NETLOGON\wallpapers\wallpaper-2025-10.jpg
. - Mettre à jour la GPO : User Configuration → Policies → Administrative Templates → Desktop → Desktop Wallpaper et renseigner le chemin UNC complet ; définir le style (Fill/Fit/Stretch).
- Réplication : attendre la réplication SYSVOL (ou accélérer via
dfsrdiag SyncNow
/repadmin /syncall
durant une fenêtre contrôlée). - Validation : sur quelques postes pilotes, exécuter
gpupdate /force
, puisgpresult /h C:\temp\gp.html
et vérifier la stratégie et l’image. - Nettoyage : supprimer l’ancienne image uniquement après confirmation du déploiement.
Bonnes pratiques durables pour le dossier NETLOGON
Architecture et gouvernance
- Réserver NETLOGON aux éléments légers : scripts, petits binaires, images modestes. Déporter les gros fichiers vers un partage DFS hautement disponible.
- Versionner : dépôt Git privé ou répertoire « maître » ; mettre en place un pipeline simple (validation → livraison → publication dans
SYSVOL
). - Structurer :
\scripts
,\wallpapers
,\bin
,\config
. Éviter l’encombrement à la racine. - Documenter la fonction et l’usage de chaque fichier (GPO associée, équipe propriétaire, date de mise à jour).
Permissions NTFS et partage
- NTFS : Administrateurs du domaine & Système = Modification ; Utilisateurs authentifiés ou Computers = Lecture & exécution ; pas d’écriture pour les utilisateurs standards.
- Partage : lecture pour tous les authentifiés ; écriture seulement pour l’équipe d’admin.
- Audit : sur les dossiers critiques, activer l’audit des ouvertures/échecs (Object Access) pour retracer les verrous inhabituels.
Maintenance et surveillance
- Exclusions antivirus pour
C:\Windows\SYSVOL
etNETLOGON
(lecture autorisée, analyse à l’accès allégée). - Contrôle mensuel : script d’ouverture exclusive sur un échantillon de fichiers ; alerte s’il existe des verrous anormalement longs.
- Journaux à surveiller : Windows Logs → Security (4656/4658), Applications and Services Logs → DFS Replication (5002/5014 et al.), GroupPolicy/Operational pour les erreurs GPO.
Scripts prêts à l’emploi
Test d’ouverture exclusive (détection préventive de verrous)
# Teste si un fichier de NETLOGON peut être ouvert en exclusif
function Test-ExclusiveLock {
param([Parameter(Mandatory)][string]$Path)
try {
$fs = [System.IO.File]::Open($Path, 'Open', 'Read', 'None')
$fs.Close()
[pscustomobject]@{ Path = $Path; Locked = $false; Note = 'Ouverture exclusive OK' }
}
catch [System.IO.IOException] {
[pscustomobject]@{ Path = $Path; Locked = $true; Note = $_.Exception.Message }
}
}
# Exemple d'utilisation
'\\NETLOGON\wallpapers\wallpaper-2025-10.jpg' | ForEach-Object { Test-ExclusiveLock $_ }
Inventaire des fichiers ouverts sur chaque DC
# Dresse un inventaire des fichiers NETLOGON ouverts sur tous les DCs
$DCs = (Get-ADDomainController -Filter *).HostName
$report = foreach ($dc in $DCs) {
Invoke-Command -ComputerName $dc -ScriptBlock {
Get-SmbOpenFile | Where-Object { $_.Path -like '*\\NETLOGON\\*' } |
Select-Object @{n='DC';e={$env:COMPUTERNAME}},
ClientComputerName, ClientUserName, Path, FileId, SessionId, ContinuouslyAvailable
}
}
$report | Sort-Object DC, ClientComputerName | Format-Table -AutoSize
Planificateur : contrôle mensuel automatique
# Script de contrôle mensuel (à exécuter via tâche planifiée sur 1 DC)
$files = @(
'\\<domaine>\NETLOGON\wallpapers\wallpaper-2025-10.jpg',
'\\<domaine>\NETLOGON\scripts\logon.ps1'
)
$alerts = foreach ($f in $files) { Test-ExclusiveLock -Path $f | Where-Object {$_.Locked} }
if ($alerts) {
# Ici : envoyer un mail, un ticket, ou consigner dans un SIEM
$alerts | Out-File -FilePath 'C:\Logs\Netlogon-Locks.txt' -Append
}
Réplication DFSR : que vérifier en cas d’anomalie ?
- Backlog : s’il existe un retard de réplication, évitez toute suppression immédiate ; attendez la convergence.
- Staging : un fichier volumineux ou trop fragmenté peut rester en staging ; réduisez la taille des artefacts, compressez si nécessaire.
- Interop : validez que tous les DCs utilisent DFSR (et non FRS). En environnement moderne, FRS doit être migré.
# Exemples utiles (à exécuter dans une fenêtre de maintenance)
dfsrdiag backlog /rgname:"Domain System Volume" /rfname:"SYSVOL Share" /smem:<SourceDC> /rmem:<CibleDC>
repadmin /syncall /AdeP
dfsrdiag SyncNow /Partner:<DC-Partenaire> /RGName:"Domain System Volume"
FAQ des pièges courants
- Le fichier reste verrouillé après fermeture des sessions : vérifier l’antivirus, l’indexeur et les éditeurs ouverts côté DC (Notepad, PowerShell ISE). Fermer ou exclure.
- Impossible d’écraser un fichier .jpg : déposer la nouvelle version sous un nom différent, modifier la GPO, valider, puis supprimer l’ancienne.
- Les postes ne récupèrent pas l’image : contrôler GroupPolicy/Operational sur le client, la connectivité au partage, et les autorisations de lecture.
- Multiples DCs : un verrou peut n’exister que sur un DC ; inspecter et libérer sur tous.
- Performances : trop de gros fichiers dans NETLOGON nuit au temps de logon et à la réplication ; migrez vers un partage DFS/File Server.
Checklist express
- Identifier le handle :
Get-SmbOpenFile
ou outils Sysinternals. - Libérer le fichier :
Close-SmbOpenFile -Force
(et informer l’utilisateur). - Déployer sous un nouveau nom et mettre à jour la GPO.
- Valider réplication SYSVOL et application GPO (
gpresult
). - Nettoyer l’ancien fichier après convergence.
- Mettre en place des exclusions AV, un versioning, et un contrôle mensuel.
Modèle de procédure d’exploitation standard (SOP)
- Pré‑prod : dépôt Git, revue, tests de charge (taille < 1 Mo pour images).
- Livraison : copie vers
\\<domaine>\NETLOGON\wallpapers\wallpaper-YYYY‑MM.jpg
. - Configuration : GPO Desktop Wallpaper vers le nouveau chemin UNC.
- Réplication & validation : surveillance DFSR, pilotes,
gpupdate
, échantillon de postes. - Nettoyage contrôlé : suppression de l’ancienne version après validation.
- Observabilité : inventaire des verrous, alerting, audit des accès.
Exemple d’alerting avec fermeture automatique
À utiliser avec parcimonie et dans une fenêtre prévue : fermeture forcée d’un verrou persistant au‑delà de 24 h.
$seuil = (Get-Date).AddHours(-24)
$targets = Get-SmbOpenFile |
Where-Object { $_.Path -like '*\\NETLOGON\\*' -and $_.CreationTime -lt $seuil }
if ($targets) {
$targets | ForEach-Object {
Write-EventLog -LogName Application -Source 'NetlogonLockWatch' -EventId 1001 `
-EntryType Warning -Message "Verrou NETLOGON persistant : $($*.Path) tenu par $($*.ClientUserName) depuis $($*.CreationTime)."
# Fermeture prudente (activable si validé par la gouvernance)
# Close-SmbOpenFile -FileId $*.FileId -Force
}
}
Quand envisager une architecture alternative
- Beaucoup d’images ou mises à jour fréquentes : héberger les fonds sur un partage DFS dédié et référencer l’URL/UNC depuis la GPO ; sur Windows 11, le paramètre « Download wallpaper from URL » permet de découpler totalement la dépendance à
NETLOGON
. - Sites distants : placer des cibles localisées (DFS) pour limiter la latence et les locks prolongés.
- CI/CD IT : pipeline qui pousse dans
SYSVOL
uniquement après tests et scans.
Conclusion
Les fichiers verrouillés dans NETLOGON
relèvent d’un usage en cours – pas d’un dysfonctionnement d’Active Directory. En combinant une détection précise des handles (Get-SmbOpenFile
, Sysinternals), une méthode de libération contrôlée (Close-SmbOpenFile
), des bonnes pratiques de gouvernance (versioning, exclusions AV, permissions strictes) et un processus de déploiement basé sur de nouveaux noms de fichiers + GPO, vous sécurisez vos mises à jour (fonds d’écran, scripts) sans perturber l’environnement.