Impossible de se déconnecter, de se déconnecter ou de réinitialiser l'utilisateur du serveur Terminal Server dans l'environnement de production


19

Je cherche des idées sur la façon de déconnecter, fermer une session ou réinitialiser la session d'un utilisateur dans un serveur Terminal Server 2008 (impossible de se connecter en tant qu'utilisateur car il est complètement verrouillé). Il s'agit d'un environnement de production, il n'est donc pas question pour l'instant de redémarrer le serveur ou de faire quelque chose à l'échelle du système. Des astuces Powershell pour nous aider?

Nous avons essayé de déconnecter, de déconnecter l'utilisateur et de réinitialiser la session, ainsi que de tuer également les processus de la session, directement depuis le même serveur de terminaux (depuis le gestionnaire de tâches, le gestionnaire de services Terminal Server et le moniteur de ressources) sans résultat.

Aidez-moi!


MISE À JOUR: Nous avons fini par redémarrer le serveur car aucune autre tentative à laquelle nous pouvions penser n'a fonctionné. Je laisse cette question ouverte en espérant que quelqu'un puisse avoir plus d'informations sur ce problème, et ses correctifs potentiels


2
J'ai exactement le même problème sur mes serveurs Terminal Server Windows 2008 R2 SP1. Ils se bloquent simplement de manière aléatoire et les utilisateurs ne peuvent pas se déconnecter ni se connecter au serveur. Je ne peux pas me connecter localement en tant qu'administrateur local ou administrateur de domaine. La seule façon de se connecter au serveur utilise compmgmt.msc mais même ici, je ne vois aucun problème dans les journaux des événements. À un moment donné, je reçois un message disant que le service IMA ne répond pas et que le serveur a été supprimé de la ferme. La seule façon de résoudre ce problème est de redémarrer le serveur dur. Éteignez et rallumez. Je n'ai pas été en mesure de réduire la cause de cela à rien et je



1
Liens potentiellement utiles pour toute personne rencontrant ce problème à l'
avenir

Réponses:


7

Ce qui a fonctionné pour moi pour résoudre ce même problème a été de tuer tous les processus en cours d'exécution sous le compte verrouillé sous le Gestionnaire des tâches, puis j'ai pu simplement me déconnecter de ce compte (à partir d'un compte administrateur).

L'utilisateur a ensuite pu se reconnecter sous le compte.

Aucun redémarrage n'a été nécessaire et aucun logiciel tiers n'a dû être téléchargé.


-Merci, m'a sauvé du redémarrage du serveur! Je ne voulais vraiment pas expulser tout le monde pendant la journée de travail en raison d'une session bloquée.
MAW74656

Est-il sûr de tuer ces processus? Mon utilisateur csrss.exe, dwm.exe, LoginUI.exeet winlogon.exe. Je pensais que tuer winlogon.exedéclencherait un BSOD…
binki

6

Je veux partager comment je réinitialise le compte sans avoir besoin de redémarrer le serveur. Tout d'abord, vous devez avoir un accès administrateur au serveur. J'utilise l'option d'ouverture de session suivante: mstsc / v: nom_serveur / console / admin pour accéder au serveur. Ensuite, dans "Windows Taks Manager", allez dans l' onglet Utilisateurs et faites un clic droit sur le compte que vous souhaitez "Fermer la session", sélectionnez Fermer la session. Cela devrait libérer la session verrouillée utilisée par ce compte.


1
sauf que ce n'est pas toujours le cas. De plus, le PO a déclaré qu'il avait déjà essayé cela.
BeowulfNode42

Pour ce problème, le bouton Déconnexion dans le Gestionnaire des tâches → Utilisateurs ne fait rien.
binki

5

La réponse simple consiste à exécuter une invite de commande élevée et à taper «Taskmgr», puis cela vous permettra de fermer la session sous l'onglet UTILISATEURS. Cela ne fonctionnera pas sans être dans la session élevée.


Testé et cette solution a fonctionné.
Overmind

1
Pas pour moi. Ne peut pas non plus utiliser le gestionnaire de tâches en tant qu'administrateur pour tuer l'un des processus de l'utilisateur.
BeowulfNode42

3

Vous pouvez démarrer une cmd, effectuer une session de requête , vérifier l'ID de la session à tuer, puis effectuer une session de réinitialisation . Par exemple, si avec la session de requête vous obtenez que le nom de session rdp-tcp # 1 est celui que vous voulez tuer, alors vous pouvez exécuter réinitialiser la session rdp-tcp # 1 et le faire tuer.


Merci, mais cela n'a pas aidé non plus.
l0c0b0x

Lorsque j'exécute reset session 9cette commande se bloque simplement. Ma session continue d'avoir les quatre processus en cours d' exécution sans avoir l' air d'être actif: crss.exe, dwm.exe, LogonUI.exeet winlogon.exe. i.imgur.com/cFM62RA.png et query session 9sorties No User exists for 9.
binki

3

Je suppose que la même chose s'est produite aujourd'hui sur mon serveur Terminal Server Win2008R2. Les sympthoms étaient: 1. Il m'a téléphoné avec "le message" se reliant "se bloque pour toujours". C'est juste un simple utilisateur, donc je ne peux pas m'attendre à une description détaillée du problème. 2. Session de déconnexion / réinitialisation essayée (ce qui aide généralement dans ces cas) - n'a pas fonctionné. La session se bloque toujours dans la liste avec le statut «déconnecté». 3. J'ai essayé de tuer tous les processus pour cet utilisateur - n'a pas aidé. La session persiste et refuse de se faire tuer.

La solution était - connectez-vous en tant qu'utilisateur (connectez-vous avec ses informations d'identification si vous pouvez réinitialiser son mot de passe ou utilisez une sorte d'assistance à distance pour voir ce qui se passe sur son ordinateur) et voir ce qui se passe dans la fenêtre de connexion. Lors de la connexion, j'ai cliqué sur le bouton `` Détails '' du client RDP - et le voici, un message d'erreur indiquant que winlogon a fait quelque chose de mal, il attendait que l'utilisateur clique sur les boutons `` réessayer / ignorer / etc '' et puisque c'est le winlogon omnipotent qu'il a provoqué tout ce comportement bizarre.

ps je ne pouvais pas trouver de moyen de forcer vraiment tuer une session :(


Cela l'a corrigé pour moi! Il attendait que l'utilisateur choisisse de déconnecter un autre utilisateur ou d'appuyer sur Annuler. J'ai appuyé sur Annuler et maintenant cet utilisateur qui était coincé dans l'onglet Utilisateurs du Gestionnaire des tâches a disparu. Merci!
binki

Voici à quoi ressemblait ma situation lorsque c'était le problème: i.imgur.com/W6eO5wW.png i.imgur.com/EpPwyJc.png i.imgur.com/cFM62RA.png Aussi, j'utilise Windows Server 2016
binki

3

Nous venons d'avoir un problème similaire avec notre serveur Bureau à distance Windows Server 2008 R2. La session utilisateur a montré "Actif" lors de la consultation de RDS Manager, mais n'a pas affiché l'ID de session associé ou le périphérique connecté (les deux étaient vides).

Toutes les astuces ci-dessus n'ont pas résolu le problème. Lors de la connexion en tant qu'utilisateur en question, un message d'erreur est revenu indiquant que le serveur Terminal Server était occupé et pour réessayer plus tard ou contacter l'administrateur.

Nous avons également redémarré le serveur.


2

J'ai eu le même problème dans Windows Server 2016. L'utilisateur n'a pas pu se connecter.

J'ai donc essayé les étapes suivantes pour déconnecter la session orpheline:

  1. sur la CLI qwinsta répertorie toutes les sessions disponibles, inactives et actives, il y a une session déconnectée (appelée "getr." dans la capture d'écran) sans nom d'utilisateur, mais un identifiant de session.

montrer des sessions actives et les tuer

  1. avec l'id de session (7) de 1. J'ai essayé de tuer cette session avec la session de réinitialisation 7 (fyi: rwinsta est un alias pour la session de réinitialisation)

  2. cela a fonctionné pendant une session, mais la prochaine fois, cela n'a eu aucun effet, j'ai donc ouvert le gestionnaire de tâches et l'onglet utilisateur. Vous y trouverez une liste extensible attribuée à chaque utilisateur de bureau à distance - une liste n'avait pas de nom d'utilisateur et n'affichait que 4 tâches en cours d'exécution.

  3. J'ai essayé la plus évidente: déconnecter l'utilisateur. Sans aucun effet.

essayer de déconnecter l'utilisateur

  1. J'ai donc essayé de mettre fin à ces 4 tâches assignées à cet utilisateur. Soyez prudent, car certaines tâches, surtout csrss.exe, une fois tuées, entraîneraient également un redémarrage du système. Je les ai sautés et je viens de tuer des tâches RDP évidentes.

Après l'étape / essai 4, même la dernière session bloquée a été tuée et l'utilisateur a pu se reconnecter

  1. Si cela ne fonctionne toujours pas, essayez cette solution à partir d' une autre question : lorsque vous vous connectez avec le client RDP, cliquez sur le bouton "Détails". Là, vous devriez voir une erreur et vous pouvez même cliquer sur réessayer ou ignorer .

Pouvez-vous être plus précis sur les processus que vous avez tués et ceux à ne pas tuer? Je pense que je devrais sauter winlogon.exemais je ne suis pas sûr d' autres comme LoginUI.exe, csrss.exeet dwm.exe.
binki

Les symptômes de la deuxième session que vous aviez semblaient similaires aux miens et à serverfault.com/a/176080/164429 . Vous pourriez probablement ajouter "Connect" comme étape pour essayer une solution plus complète et peut-être même éviter d'avoir à tuer les processus.
binki

@binki ce devrait être "csrss.exe" - si vous tuez ce processus, le système redémarrera.
nr

1

Il peut être utile de vérifier que l'utilisateur n'a pas de boîte de dialogue d'informations d'identification cachée derrière la fenêtre du bureau distant avec alt + tab.

Un collègue avait le même problème; n'a pas pu se déconnecter ou se réinitialiser, et tous ses processus ont été arrêtés manuellement. Lorsque j'ai essayé d'accéder à l'interface graphique du système à partir duquel il se connectait, j'ai trouvé une boîte d'informations d'identification se cachant derrière la session distante.


1

J'aurais la même situation: un Windows Server 2008 R2 avec les services Bureau à distance, une connexion RDP configurée pour déconnecter les utilisateurs après que la session est inactive ou déconnectée 3 heures, et certaines sessions restent verrouillées. J'ai essayé de les déconnecter avec Remote Desktop Manager et qwinsta / quser, sans succès.

Voici comment je l'ai résolu:

  1. J'ai localisé l'ID de session avec qwinsta.
  2. J'ai localisé le PID de winlogon.exela session bloquée avec query process /ID:yourid.
  3. J'ai tué le processus avec taskkill /f /PID yourPID.

Marche à suivre. J'aimerais autrement trouver une solution pour que cela ne se produise pas.


1

Ce qui a fonctionné pour moi, c'est:

  • connectez-vous au serveur
  • ouvrir le gestionnaire de tâches
  • recherchez l'utilisateur dans l'onglet utilisateur
  • faites un clic droit, connectez-vous, entrez le mot de passe de l'utilisateur, j'ai vu un écran «Veuillez patienter»
  • appuyez sur alt-tab, qui m'a déconnecté du serveur et déconnecté l'utilisateur aussi

1

J'ai rencontré ce problème avec les utilisateurs verrouillés de l'application Bureau à distance. J'ai écrit ce script Powershell pour qu'il s'exécute sur une tâche planifiée pour déconnecter les utilisateurs qui se sont montrés déconnectés pendant plus de 2 minutes. La seule modification requise est le SERVERNAME que j'ai défini pour exclure le serveur Remote Desktop Broker, mais vous pouvez exclure tout serveur que vous aimez, ou aucun du tout.

Soit dit en passant, mon script a été écrit pour Windows Server 2012 R2 ...

Le script fait ceci:

  • Obtient une liste de toutes les sessions utilisateur du Bureau à distance.
  • Ignore toutes les sessions qui ne disent pas "STATE_DISCONNECTED".
  • Ignore le serveur Broker (ou tout autre serveur)
  • Ignore toutes les sessions sans ID de session unifiée
  • Ignore toutes les sessions qui n'ont pas de temps de déconnexion
  • Pour les sessions qui ont un temps de déconnexion, il vérifie l'heure actuelle et si la différence de temps entre maintenant et le temps de déconnexion est supérieure à X minutes (dans ce cas 2), tue le processus winlogon.
  • Il tente également d'émettre une commande de déconnexion (cela échouera très probablement après la fin du processus Winlogon).

Ça marche pour moi! J'espère que ça aide quelqu'un d'autre! :)

CLS
$RD = Get-RDUserSession | select ServerName, UserName, SessionState, DisconnectTime, UnifiedSessionId, SessionId #Get details about the sessions
foreach ($item in $RD) {
    $UsessionID = $item.UnifiedSessionId -as [int] 
    $sessionID = $item.SessionId -as [int] 
    if ($item.SessionState -eq "STATE_DISCONNECTED" -and $item.ServerName -ne "SERVERNAME" -and $item.DisconnectTime -ne $null -and $item.UnifiedSessionId -ne $null){
        $TimeDiff = New-TimeSpan -start $item.DisconnectTime -end (Get-Date) #check time difference between disconnect time and now. If time is greater than 2 minutes....
        if ($TimeDiff.Minutes -gt 2) {
            #Kill winlogon session for the user
            Get-WmiObject -ComputerName $item.Servername -query "select * from win32_process where name='winlogon.exe'" | Where-Object {$_.SessionId -eq $SessionId} | %{$_.terminate()}
            #Log off user if session still exists (will fail if user kicked)
            Invoke-RDUserLogoff -HostServer $item.ServerName -UnifiedSessionID $UsessionID -Force -erroraction 'silentlycontinue'
            }
         }
      }

Ou si vous préférez une version que vous pouvez voir ce qui se passe à l'écran:

 CLS
    $RD = Get-RDUserSession | select ServerName, UserName, SessionState, DisconnectTime, UnifiedSessionId, SessionId
    foreach ($item in $RD) {
        $UsessionID = $item.UnifiedSessionId -as [int]
        $sessionID = $item.SessionId -as [int]
        if ($item.SessionState -eq "STATE_DISCONNECTED" -and $item.ServerName -ne "SERVERNAME" -and $item.DisconnectTime -ne $null -and $item.UnifiedSessionId -ne $null){
            #On Screen Output
            write-host " Name : " $Item.UserName -ForegroundColor "yellow" -NoNewline
            write-host " Unified Session Id : " $UsessionID -ForegroundColor "darkcyan" -NoNewline
            write-host " User Session Id : " $sessionID -ForegroundColor "darkyellow" -NoNewline
            write-host " Session State : " $item.SessionState -ForegroundColor "magenta" -NoNewline
            write-host " Server : " $item.ServerName -ForegroundColor "cyan" -NoNewline
            write-host " Disconnect Time : " $item.DisconnectTime -ForegroundColor "gray" 
            #End On Screen Output
            $TimeDiff = New-TimeSpan -start $item.DisconnectTime -end (Get-Date)
            if ($TimeDiff.Minutes -lt 2) {
                write-host " Disconnected for less than 2 minutes" -ForegroundColor "Green"}
            else {
                write-host " Disconnected for more than 2 minutes" -ForegroundColor "Red" -BackgroundColor "darkyellow"
                write-host " Killing session : " $item.ServerName " ID : " $UsessionID $item.UserName -ForegroundColor "Red"
                #Kill Process "Winlogon.exe" for the user (this should kill the session)
                Get-WmiObject -ComputerName $item.Servername -query "select * from win32_process where name='winlogon.exe'" | Where-Object {$_.SessionId -eq $SessionId} | %{$_.terminate()}
                #Logout User (if session still exists)
                Invoke-RDUserLogoff -HostServer $item.ServerName -UnifiedSessionID $UsessionID -Force -erroraction 'silentlycontinue'
                Write-host " Done! " -ForegroundColor "Green" -BackgroundColor "blue"
                }
             }
          }

1

Créez un fichier dans le bloc-notes et appelez-le findession.cmd. Placez la commande Query Session / server: servername | recherchez / i "% 1" et enregistrez-le dans un répertoire. Créez un autre fichier appelé resetsession.cmd et exécutez la commande Réinitialiser la session% 1 / serveur:% 2 et enregistrez.

À partir d'une invite de commande, accédez au répertoire dans lequel vous avez enregistré ces fichiers et tapez nom d'utilisateur findessions (connexion de l'utilisateur que vous essayez de trouver). Appuyez sur Entrée et vous devriez voir l'identifiant de connexion et de session. Tapez resetsession.cmd ID Servername et il réinitialisera cette session. J'utilise cela quotidiennement et c'est super rapide pour trouver des utilisateurs et réinitialiser leurs sessions.


veuillez utiliser les options de mise en forme du texte pour mettre en évidence les commandes et améliorer la lisibilité. C'est une bonne réponse, mais veuillez la modifier.
Marco

Il n'y a aucun intérêt à écrire des fichiers batch lorsque les commandes sont si courtes et que vous devrez de toute façon leur passer des arguments
binki

1
  1. Localisez l'ID de session avec qwinsta.
  2. Tuez tous les processus de la session taskkill /FI "SESSION eq 1" /F, en supposant que l'ID de session que vous souhaitez terminer renvoyé par qwinsta était 1.

Cela a fonctionné sur Server 2012 Version 6.2 Build 9200, je m'attendrais à ce qu'il fonctionne sur toutes les versions de Windows.


1

Ce script Power-Shell a fonctionné pour moi, il donne même un joli fichier journal. Je l'ai eu d' ici. : J'espère que cela aidera quelqu'un d'autre car les autres réponses avaient beaucoup de prérequis et ou ne fonctionnaient pas pour moi.

    # .SYNOPSIS
    #   Checks for disconnected sessions and logs off the disconnected user sessions.

    #.DESCRIPTION
    #   Checks for disconnected sessions and logs off the disconnected user sessions.

    #.NOTES
    #   File Name: Logoff-DisconnectedSession.ps1
    #   Author   : Bart Kuppens
    #   Version  : 1.1

    #.EXAMPLE
    #   PS > .\Logoff-DisconnectedSession.ps1


    function Ensure-LogFilePath([string]$LogFilePath)
    {
     if (!(Test-Path -Path $LogFilePath)) {New-Item $LogFilePath -ItemType directory >> $null}
    }

    function Write-Log([string]$message)
    {
       Out-File -InputObject $message -FilePath $LogFile -Append
    }

    function Get-Sessions
    {
       $queryResults = query session
       $starters = New-Object psobject -Property @{"SessionName" = 0; "UserName" = 0; "ID" = 0; "State" = 0; "Type" = 0; "Device" = 0;}
       foreach ($result in $queryResults)
       {
          try
          {
             if($result.trim().substring(0, $result.trim().indexof(" ")) -eq "SESSIONNAME")
             {
                $starters.UserName = $result.indexof("USERNAME");
                $starters.ID = $result.indexof("ID");
                $starters.State = $result.indexof("STATE");
                $starters.Type = $result.indexof("TYPE");
                $starters.Device = $result.indexof("DEVICE");
                continue;
             }

             New-Object psobject -Property @{
                "SessionName" = $result.trim().substring(0, $result.trim().indexof(" ")).trim(">");
                "Username" = $result.Substring($starters.Username, $result.IndexOf(" ", $starters.Username) - $starters.Username);
                "ID" = $result.Substring($result.IndexOf(" ", $starters.Username), $starters.ID - $result.IndexOf(" ", $starters.Username) + 2).trim();
                "State" = $result.Substring($starters.State, $result.IndexOf(" ", $starters.State)-$starters.State).trim();
                "Type" = $result.Substring($starters.Type, $starters.Device - $starters.Type).trim();
                "Device" = $result.Substring($starters.Device).trim()
             }
          } 
          catch 
          {
             $e = $_;
             Write-Log "ERROR: " + $e.PSMessageDetails
          }
       }
    }

    Ensure-LogFilePath($ENV:LOCALAPPDATA + "\DisconnectedSessions")
    $LogFile = $ENV:LOCALAPPDATA + "\DisconnectedSessions\" + "sessions_" + $([DateTime]::Now.ToString('yyyyMMdd')) + ".log"

    [string]$IncludeStates = '^(Disc)$'
    Write-Log -Message "Disconnected Sessions CleanUp"
    Write-Log -Message "============================="
    $DisconnectedSessions = Get-Sessions | ? {$_.State -match $IncludeStates -and $_.UserName -ne ""} | Select ID, UserName
    Write-Log -Message "Logged off sessions"
    Write-Log -Message "-------------------"
    foreach ($session in $DisconnectedSessions)
    {
       logoff $session.ID
       Write-Log -Message $session.Username
    }
    Write-Log -Message " "
    Write-Log -Message "Finished"  

Edit:
J'ai utilisé ce script à l'origine pour me déconnecter et fermer toutes les sessions "déconnectées". Nous avons quelques applications de serveur terminal avec de nombreux utilisateurs et des licences limitées. Les sessions déconnectées resteraient ouvertes très longtemps et parfois elles resteraient ouvertes indéfiniment. Cela a entraîné des sessions inutilisées qui occuperaient certaines des licences et les autres utilisateurs ne pourraient alors pas se connecter.

  • J'exécute le script à l'aide d'une tâche planifiée pour vérifier et
    déconnecter régulièrement les sessions sur certains de mes serveurs. Il fonctionne de manière autonome
    sans aucune interaction nécessaire.
  • Je l'utilise sur les systèmes d'exploitation Windows 2008 R2 Server et Windows 2012 R2 Server.
  • Il ferme uniquement les sessions qui étaient déconnectées.
  • Il met à jour un fichier «journal» avec les utilisateurs ou les sessions qu'il a déconnectés.

Pourriez-vous expliquer ce qu'il fait?
Konrad Gajewski

1
Salut Konrad, j'ai un peu édité la réponse et j'espère que cela explique ce que fait le script. Fondamentalement, le script ferme toutes les sessions déconnectées qui restent ouvertes après qu'un utilisateur distant se déconnecte du serveur.
9953-div-37

0

Il y a peut-être un processus toujours en cours, bloquant le processus de déconnexion. Vérifiez les processus en cours d'exécution pour l'utilisateur concerné. Ensuite, tuez le processus un par un pour voir celui qui cause le problème.

Vérifiez également la HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Runclé de Registre que seuls les processus nécessaires sont démarrés. En 64 bits c'est le cas HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run.


0

Vous pouvez télécharger l' outil " Process Explorer " de Microsoft et l'utiliser pour résoudre votre problème. Si vous disposez des ID de session, vous pouvez trouver leurs processus respectifs. Ensuite, si une session utilisateur est déconnectée, vous pouvez tuer le processus avec Process Explorer.


0

Pas exactement le même environnement (nous avons 2012r2) mais le redémarrage du service de gestion de machine virtuelle Hyper-V (VMMS) a libéré la connexion pour moi.


0

Vous devez cliquer sur le processus et afficher le processus de tous les utilisateurs, puis vous pourrez vous déconnecter.

pourquoi ne pas créer une stratégie de session sous la configuration de l'hôte de la session Bureau à distance, terminer la session déconnectée ou inactive après un certain intervalle.


0

Ma solution: sur un autre serveur réseau, je me suis connecté au serveur problématique via l'outil de gestion de l'ordinateur, dans les sessions ouvertes, j'ai cliqué avec le bouton droit et fermé chaque fichier ouvert, puis j'ai pu me connecter via mstsc


0

vous pouvez toujours utiliser PowerShell à partir de votre machine locale et le faire à distance

Invoke-command -computername <servername> -Credential (get-credential) { 
    $session = ((quser | ? { $_ -match <username> }) -split ' +' )[2]
    logoff $session
} 

Pour rendre votre réponse encore plus utile, il serait utile de fournir une explication de base sur le fonctionnement de cette commande. Tout le monde peut ne pas avoir suffisamment d'expérience avec PowerShell pour le comprendre. Merci d'avoir contribué.
Je dis Réintégrer Monica

-1

Malheureusement. Ma session utilisateur a été déconnectée. Le gestionnaire de tâches n'a montré aucun processus exécuté en tant qu'utilisateur. Je n'ai pas pu déconnecter l'utilisateur du gestionnaire de tâches. J'ai essayé de réinitialiser la commande de session id et j'ai fini par geler également. J'ai dû finir par me connecter à une session différente en tant qu'administrateur, supprimer le compte et en recréer un nouveau.


-1

Avez-vous essayé de vous déconnecter de l'utilisateur de Remote Desktop Services Manager? Accédez à Outils d'administration -> Services Bureau à distance -> Gestionnaire des services Bureau à distance et fermez la session. Cela peut fonctionner.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.