Problème de reconnexion sur une application limitée à une instance

Au sein d’une ferme XenApp 6.5 R03 US, nous avions des utilisateurs qui ne pouvaient plus se connecter sur une application limitée à une instance par utilisateur.

 

Reco01

 

En regardant les sessions des utilisateurs rencontrant ce type de problème nous avons constaté que les sessions étaient actives, en effet les sessions déconnectées passaient en active après un délai de 30 mn, les 30 mn correspondant à la “fin d’une session déconnectée” dans une GPO du silo applicatif.

Dans notre cas les sessions n’étaient pas fermées mais repassaient en active du fait que le process “splwow64.exe” (permet l’impression à partir d’application 32 bits sur des pilotes 64 bits) ne se fermait pas correctement (merci procmon, mais on aurait pu faire plus simple via un gestionnaire de tâche 🙂 ).

Un google plus loin nous tombons sur la CTX138940 qui dans le point 11 indique que dans pareil cas il faut créer (sauf si vous jouez avec la persistance de session) la clé de registre (REG_DWORD) “AllowLogoffSysModules” et lui donnez la valeur 1.

 

Reco02

Post to Twitter

Activer/Désactiver l’ouverture de session TS par le registre

Si vous devez activer/désactiver l’ouverture de session Terminal Server sur un serveur distant et que vous ne souhaitez pas passer par TSLOGINS (ou autres), une solution est de le faire via le registre (modification de la valeur WinStationsDisable) .

La valeur WinStationsDisable se trouve dans :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
“WinStationsDisabled”=”0”
0 = Logon On
1 = Logon Off

Connectez vous au registre du serveur distant (faite un regedit puis allez dans le menu “Fichier” et choisissez  “Connexion au Registre réseau”) et modifiez la valeur WinStationsDisable.

Si la modification via le registre ne vous tente pas trop, vous pouvez le faire en powershell :
$Hostname = "Your Server"
$Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Hostname)
$WinStationsDisabled = $Registry.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",$true)
$WinStationsDisabled.SetValue('WinStationsDisabled','0','String')
Write-Host $Hostname " WinStationsDisabled " $WinStationsDisabled.GetValue('WinStationsDisabled')

Post to Twitter