Windows en domaine : corriger le verrouillage automatique des sessions (GPO, sécurité, RDS, Intune)

Vos postes Windows en domaine se verrouillent ou se déconnectent tout seuls ? Voici une méthode complète, concrète et éprouvée pour diagnostiquer et corriger le problème (GPO, stratégies locales, RDS/VDI, Intune/MDM), avec scripts PowerShell, tableaux récapitulatifs et check‑list de déploiement.

Sommaire

Vue d’ensemble de la question

Dans plusieurs machines jointes au domaine, les utilisateurs voient l’écran se verrouiller ou la session se fermer de façon inattendue ; ils doivent ressaisir leur mot de passe. Le phénomène survient quotidiennement et perturbe la productivité. Les causes les plus fréquentes sont : GPO mal calibrées (écran de veille, inactivité), stratégies de sécurité locales, limites d’inactivité RDS/VDI, profils MDM (Intune) qui surchargent les GPO, scripts ou tâches planifiées déclenchant un logoff, présence ou « verrouillage dynamique » via Bluetooth, ou encore paramètres d’alimentation trop agressifs.

Ce qu’il faut clarifier dès le départ

Symptôme observéEffet côté utilisateurIndices techniques
Verrouillage de la sessionÉcran de connexion, session toujours ouverte en arrière‑planÉvénements 4800 (lock) / 4801 (unlock) dans Sécurité (si audit activée)
Fermeture de sessionApplications fermées, retour à l’écran de connexionÉvénement 4647 (logoff initié par l’utilisateur) ou 4634 (compte déconnecté)
Déconnexion RDP (RDS/VDI)Session distante « Déconnectée », parfois perd des appsJournal TerminalServices-LocalSessionManager : 24/25 (disconnect/reconnect)

Diagnostic rapide (5 à 10 minutes)

  1. Observer : l’écran se verrouille‑t‑il (session intacte) ou y a‑t‑il fermeture (apps relancées) ?
  2. Lancer gpresult pour voir les GPO effectives (utilisateur + ordinateur) et les paramètres de personnalisation.
  3. Consulter l’Observateur d’événements : Sécurité (IDs 4647, 4634, 4800, 4801) et System (réveils/veille, redémarrages).
  4. Vérifier les délais d’alimentation (powercfg) et la présence d’un écran de veille forcé ou d’une limite d’inactivité machine.
  5. Sur RDS/VDI : contrôler les limites de session (Session Time Limits), scripts de déconnexion et le broker.

Réponse & solutions proposées

Contrôler les stratégies de groupe (GPO) « Screen Saver / Lock Screen » appliquées

Côté utilisateur

  1. Ouvrez l’invite de commandes (sans privilèges admin).
  2. Exécutez :
    mkdir C:\F1 2>NUL gpresult /h C:\F1\gpo.html
  3. Ouvrez C:\F1\gpo.html et contrôlez dans Configuration utilisateur > Stratégies > Modèles d’administration > Panneau de configuration > Personnalisation :
    • Activer l’écran de veille
    • Délai d’attente de l’écran de veille (Screen saver timeout)
    • Mot de passe requis à la reprise (Password protect the screen saver)
    • Imposer un écran de veille spécifique (Force specific screen saver)
    Assurez‑vous que la combinaison des paramètres ne force pas un verrouillage trop court (p. ex. timeout ≤ 1 minute + demande de mot de passe).

Côté ordinateur

  1. Ouvrez l’invite de commandes en administrateur.
  2. Exécutez :
    gpresult /h C:\gpo.html
  3. Examinez la même arborescence sous Configuration ordinateur et vérifiez si une stratégie côté machine impose des délais courts ou une limite d’inactivité.
  4. Supprimez ou corrigez la GPO incriminée, puis forcez l’actualisation :
    gpupdate /force

Clés de registre associées (référence)

PortéeClé/valeurRôleRemarques
Utilisateur (Politique)HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop\ScreenSaveActive (REG_SZ 0/1)Active/désactive l’écran de veillePrioritaire par rapport à la clé « non‑Policies »
Utilisateur (Politique)...\ScreenSaveTimeOut (REG_SZ, secondes)Temps d’inactivité avant écran de veilleEx. 1800 pour 30 min
Utilisateur (Politique)...\ScreenSaverIsSecure (REG_SZ 0/1)Demander le mot de passe à la reprise1 = Oui
Utilisateur (Politique)...\SCRNSAVE.EXE (REG_SZ, chemin)Écran de veille imposéEx. %SystemRoot%\System32\scrnsave.scr
Machine (Sécurité)HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\InactivityTimeoutSecs (DWORD)Interactive logon: Machine inactivity limit0 = illimité, sinon secondes avant verrouillage
Machine (Sécurité)HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ScRemoveOption (REG_SZ)Comportement retrait carte à puce0 = aucune action, 1 = verrouiller, 2 = logoff, 3 = déconnecter RDP

Audit express par PowerShell (poste local)

$report = [ordered]@{}
# GPO/Reg écrans de veille
$hkcuPolicy = 'HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop'
$report.ScreenSaveActive     = (Get-ItemProperty -Path $hkcuPolicy -Name ScreenSaveActive -ErrorAction SilentlyContinue).ScreenSaveActive
$report.ScreenSaveTimeOut    = (Get-ItemProperty -Path $hkcuPolicy -Name ScreenSaveTimeOut -ErrorAction SilentlyContinue).ScreenSaveTimeOut
$report.ScreenSaverIsSecure  = (Get-ItemProperty -Path $hkcuPolicy -Name ScreenSaverIsSecure -ErrorAction SilentlyContinue).ScreenSaverIsSecure
$report.SCRNSAVE             = (Get-ItemProperty -Path $hkcuPolicy -Name SCRNSAVE.EXE -ErrorAction SilentlyContinue).'SCRNSAVE.EXE'

# Limite d'inactivité machine

$hklmSys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System'
$report.InactivityTimeoutSecs = (Get-ItemProperty -Path $hklmSys -Name InactivityTimeoutSecs -ErrorAction SilentlyContinue).InactivityTimeoutSecs

# Verrouillage dynamique (Bluetooth)

$hkcuWinlogon = 'HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon'
$report.DynamicLockEnabled = (Get-ItemProperty -Path $hkcuWinlogon -Name EnableGoodbye -ErrorAction SilentlyContinue).EnableGoodbye

# Paramètres d'alimentation courants (AC uniquement à titre indicatif)

$report.MonitorTimeoutAC  = (powercfg /q | Select-String -Pattern 'VIDEOIDLE' -Context 0,5 | Out-String)
$report.SleepTimeoutAC    = (powercfg /q | Select-String -Pattern 'STANDBYIDLE' -Context 0,5 | Out-String)

$report | Format-List 

Audit multi‑postes (AD + PS Remoting)

Exemple pour balayer un OU d’ordinateurs et récupérer les valeurs clés :

Import-Module ActiveDirectory
$computers = Get-ADComputer -Filter * -SearchBase "OU=Postes,DC=contoso,DC=local" | Select-Object -ExpandProperty Name
$script = {
  $o = [ordered]@{Computer=$env:COMPUTERNAME}
  try {
    $o.InactivityTimeoutSecs = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' `
      -Name InactivityTimeoutSecs -ErrorAction SilentlyContinue).InactivityTimeoutSecs
    $o.ScreenSaveTimeOut = (Get-ItemProperty 'HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop' `
      -Name ScreenSaveTimeOut -ErrorAction SilentlyContinue).ScreenSaveTimeOut
    $o.ScreenSaverIsSecure = (Get-ItemProperty 'HKCU:\Software\Policies\Microsoft\Windows\Control Panel\Desktop' `
      -Name ScreenSaverIsSecure -ErrorAction SilentlyContinue).ScreenSaverIsSecure
    $o.DynamicLock = (Get-ItemProperty 'HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon' `
      -Name EnableGoodbye -ErrorAction SilentlyContinue).EnableGoodbye
  } catch { }
  [pscustomobject]$o
}
$result = foreach($c in $computers){ Invoke-Command -ComputerName $c -ScriptBlock $script -ErrorAction SilentlyContinue }
$result | Export-Csv C:\F1\Verrouillage-Audit.csv -NoTypeInformation -Delimiter ';'

Contrôler les autres paramètres susceptibles de fermer la session

EmplacementÉlément à vérifierChemin/commandeValeur cibleAction
Paramètres d’alimentation (GPO ou local)Mise en veille/hibernation trop courteGPO : Système > Gestion de l’alimentation
Cmd : powercfg /change monitor-timeout-ac 30
Postes fixes : écran 30 min, veille désactivée selon contexteAllonger les délais ou désactiver la veille sur postes fixes
Stratégies de sécurité localeInteractive logon: Machine inactivity limitsecpol.msc > Options de sécurité
Reg : ...InactivityTimeoutSecs
0 (illimité) ou délai ≥ 15–30 minAjuster selon besoin sécurité/métier
Serveur RDS / RD Session HostSet time limit for active but idle Remote Desktop Services sessionsGPO : Windows Components > Remote Desktop Services > RD Session Host > Session Time LimitsAllonger/neutraliser pendant le diagnosticAjuster ou désactiver la limite d’inactivité
Tâches planifiées / scriptsScript tiers exécutant logoff, tsdiscon ou LockWorkStationCmd : schtasks /query /fo LIST /v
PS : Get-ScheduledTask
Aucune action de déconnexion non justifiéeDésactiver la tâche ou corriger le script
Verrouillage dynamique (Bluetooth)PC se verrouille quand l’utilisateur s’éloigneParamètres > Comptes > Options de connexion > Verrouillage dynamiqueDésactivé pour testDésactiver pour exclure une cause « présence »
Capteurs de présence (Windows 11)Verrouillage à la détection d’absenceParamètres > Confidentialité & sécurité > Détection de présenceDésactivé pour testDésactiver/étalonner le délai d’absence
Carte à puceRetrait de carte verrouille/déconnecteSecPol : Comportement de retrait de la carte à puce
Reg : ScRemoveOption
Verrouiller (ou aucune action) selon politiqueAdapter selon le contexte (locaux sécurisés vs ouverts)
MDM / IntuneMDM force l’auto‑lockPolicy CSP : DeviceLock/MaxInactivityTimeDeviceLock≥ 15–30 min (ou selon conformité)Contrôler profils de configuration et conformité
Broker VDI/RDSIdle timeout trop basParamètres du broker (ex. session timeout)≥ 30–60 min selon licence/chargeAligner avec le besoin métier

Analyser les journaux pour confirmer la cause

  • Observateur d’événements > Journaux Windows > Sécurité :
    • 4647 : fermeture de session initiée par l’utilisateur (ou script/tâche agissant en son nom).
    • 4634 : compte déconnecté (logoff effectif).
    • 4800/4801 : verrouillage/déverrouillage de la station de travail (si l’audit « Autres événements d’ouverture/fermeture » est activée).
  • Journaux des services Terminal Server (Applications and Services Logs > Microsoft > Windows > TerminalServices-LocalSessionManager > Operational) :
    • 24 : session déconnectée (idle/timeout).
    • 25 : session reconnectée.
  • Système : événements de veille/réveil (Power-Troubleshooter), erreurs critiques, redémarrages (1074).

Filtrage PowerShell prêt à l’emploi

$since = (Get-Date).AddDays(-3)
$sec = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=@(4634,4647,4800,4801); StartTime=$since} `
       | Select-Object TimeCreated, Id, ProviderName, Message
$ts  = Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-TerminalServices-LocalSessionManager/Operational';
       Id=@(24,25); StartTime=$since} | Select-Object TimeCreated, Id, Message
$sec + $ts | Sort-Object TimeCreated | Format-Table -AutoSize

Mesures correctives rapides

  • Tester sur un poste pilote en déliant temporairement la GPO de personnalisation ; si le symptôme disparaît, corriger la GPO.
  • Communiquer la valeur cible (par ex. 30 minutes d’inactivité) puis déployer la GPO ajustée.
  • Planifier un suivi : vérifier sous 48 h que l’incident ne réapparaît pas.

Scénarios types et remédiations

Postes fixes en open‑space

  • Verrouillage voulu mais trop agressif : augmentez Screen saver timeout à 20–30 min et gardez Password protect activé.
  • Désactivez la veille automatique en heures de bureau via GPO d’alimentation, tout en autorisant la mise en veille hors heures.

Ordinateurs portables

  • Distinguez secteur/batterie : délais plus courts sur batterie (10–15 min), plus longs sur secteur (20–30 min).
  • Validez que « Exiger un mot de passe à la sortie de veille » est cohérent avec la politique de sécurité.

Serveurs RDS / Hôtes de session

  • Contrôlez Session Time Limits (idle/disconnected/active) ; évitez de descendre sous 30–60 min d’inactivité pour les sessions actives.
  • Vérifiez les stratégies de déconnexion à la fermeture de client RDP et les scripts du broker.
  • Analysez les événements 24/25 pour corréler une déconnexion à un délai précis.

VDI / Brokers

  • Beaucoup d’environnements définissent un idle timeout côté broker pour libérer les ressources. Alignez‑le avec vos GPO pour éviter les effets contradictoires.

Parc géré en Intune / MDM

  • Le profil DeviceLock/MaxInactivityTimeDeviceLock peut surcharger les GPO classiques. Vérifiez les profils de configuration et les règles de conformité (ex. « verrouiller après x minutes »).
  • Sur appareils hybrides AD/AAD, harmonisez les stratégies AD et MDM ; privilégiez une seule source de vérité.

Postes avec carte à puce / badges

  • Si Smart card removal behavior = Logoff, l’utilisateur perd ses apps à chaque retrait. Préférez Lock Workstation si compatible avec votre PSSI.

Valeurs recommandées (référence non normative)

Profil d’usageÉcran de veilleMot de passe à la repriseLimite d’inactivité machineRemarques
Poste fixe en bureau20–30 minActivé0 (illimité) ou >= 30 minÉquilibre sécurité/confort
Portable en mobilité10–20 minActivé10–20 minPlus strict sur batterie
RDS/VDIN/APar politiqueBroker : 30–60 min idleÉviter la fermeture de session non désirée
Zone à haute sensibilité5–10 minActivé5–10 minSe conformer aux exigences réglementaires

Procédure de remédiation recommandée

  1. Inventorier les GPO actives avec gpresult et, si possible, un GPO Report central.
  2. Identifier les doublons/contraintes (ex. GPO Utilisateur + Machine + MDM + Loopback en Remplacer).
  3. Prototyper une GPO « Personnalisation – Standard » avec délais cibles, déployée sur un groupe pilote.
  4. Mesurer via journaux (IDs 4800/4801/4634/4647) et retours utilisateurs pendant 48 h.
  5. Déployer par vagues et documenter (valeurs, périmètre, exceptions).

Bonnes pratiques GPO pour éviter les surprises

  • Group Policy Loopback : en Remplacer, les stratégies utilisateur dépendront de l’ordinateur cible (RDS/VDI). Vérifiez le mode dans le rapport gpresult.
  • WMI filters : documentez‑les pour éviter des applications partielles de stratégies.
  • Ordre et héritage : limitez les GPO concurrentes sur le même paramètre.
  • Commentaires GPO : ajoutez le propriétaire, la date et la justification.

Commandes utiles de terrain

:: Rapport GPO utilisateur + machine
gpresult /h C:\F1\gpo.html

:: Forcer l’actualisation des stratégies
gpupdate /force

:: Lister tâches susceptibles de déconnecter/locker
schtasks /query /fo LIST /v | findstr /i "logoff tsdiscon LockWorkStation"

:: Interroger délais d’écran et veille
powercfg /q > C:\F1\powercfg.txt
powercfg /change monitor-timeout-ac 30
powercfg /change standby-timeout-ac 0

:: État des sessions (RDS)
query user
query session 

Check‑list d’audit express

  • Le symptôme est‑il un lock ou un logoff ?
  • Quels IDs d’événements dans les 5 dernières minutes ?
  • Quelle(s) GPO imposent Screen saver / Machine inactivity ?
  • MDM/Intune force‑t‑il un DeviceLock ?
  • Capteurs de présence / verrouillage dynamique actifs ?
  • Scripts ou tâches prévus (maintenance/licences) ?
  • Sur RDS/VDI : Session Time Limits côté Host et côté broker ?

FAQ rapide

Pourquoi un écran de veille « 1 minute » provoque‑t‑il des verrouillages à répétition ?
Parce que, combiné à « Mot de passe requis à la reprise », la moindre inactivité déclenche l’écran de connexion. En production, évitez < 5 minutes sauf exigence.

Une GPO peut‑elle être « ignorée » par Intune ?
Oui : certaines stratégies MDM (CSP) ont priorité, notamment DeviceLock. Harmonisez et centralisez vos sources de politiques.

Pourquoi mon gpupdate ne change rien ?
Loopback en mode Remplacer, cache, ou GPO non ciblée (sécurité/filtre WMI). Vérifiez le rapport HTML complet et l’étendue de sécurité.

Comment prouver la cause ?
Corrélez un verrouillage/déconnexion à un événement (4800/4647…), notez l’heure, puis montrez la stratégie (GPO/MDM) qui impose ce délai précis.

Modèles de communication pour les équipes

Objet : Ajustement du verrouillage automatique des postes Windows
Message : Pour améliorer la sécurité tout en limitant l’impact, le verrouillage automatique passe à 30 min d’inactivité sur les postes de bureau et à 15 min sur portables. Un redémarrage peut être requis. En cas de besoin métier particulier, ouvrez un ticket « Exception verrouillage ».

Informations complémentaires utiles

  • Un délai d’écran de veille trop court (≤ 1 min) associé à l’option « À la reprise, demander l’ouverture de session » suffit à produire le symptôme.
  • Sur des serveurs 2019+ avec expérience Windows 10/11, des profils MDM (Intune/Endpoint Manager) via Personalization/DeviceLock peuvent surcharger les GPO ; contrôlez les profils s’il y a du MDM.
  • Les environnements VDI/RDS utilisent souvent des scripts de déconnexion pour libérer les licences ; validez que l’idle timeout côté broker correspond à votre besoin métier.

Synthèse

Le verrouillage ou la fermeture inopinée de session sur des postes Windows membres d’un domaine provient dans la majorité des cas d’une combinaison de politiques mal alignées : GPO utilisateur/machine, limites RDS/VDI, profils MDM et automatisations locales. En procédant méthodiquement (rapport gpresult, analyse journaux, audit des paramètres d’alimentation et de sécurité), vous isolez la cause, corrigez la valeur de référence (par ex. 30 minutes d’inactivité), puis déployez en vagues avec mesure d’impact. Les scripts fournis et les tableaux de contrôle vous aident à industrialiser le diagnostic et la remédiation, pour retrouver un environnement stable et conforme à votre PSSI.

Sommaire