Неправильно закрываются терминальные сессии после закрытия приложения

Наверное, во всех больших организациях доступ в 1C организовывается с использованием терминального сервера. Такой сервер позволяет в несколько раз повысить быстродействие всей системы и не чувствовать каких-либо “проседаний” при большом количестве единовременных обращений к базе. Операционная система на терминальном сервере обычно 64-битная, так как количество ОЗУ в нем значительно больше чем 4 Гб.
Именно на 64-битной операционной системе Windows Server и наблюдается проблема с зависанием терминальных сессия после их закрытия.
Суть проблемы
Работник бухгалтерии подключается к терминальному серверу через RDP-клиент, открывает в своей сессии 1С-клиент и спокойненько себе работает. В конце рабочего дня он закрывает свой 1С-клиент и выключает компьютер. Придя на работу утром, работник, как обычно, включает свой терминал, а там синий экран. Бодрое, утреннее настроение резко исходит на нет.
В чем же беда?
Решение
Вся проблема кроется в 64-битности вашей операционной системы. Microsoft, чтобы сгладить проблемы совместимости 32- и 64- битных приложений, разрабатывает различные программные прослойки, который помогают правильно выполнять изначально поставленные перед ними задачи. Но, как говорится: “хотели, как лучше, а получилось как всегда.”
Такой проблемной прослойкой является процесс splwow64.exe, который и является корнем всех наших терминальных бед.
splwow64.exe – это программная прослойка, которая позволяет 32-битным приложениям соединиться с 64-битным диспетчером службы очереди печати.
После того, как терминальный сервер, по команде пользователя, пытается закрыть свою сессию, именно этот процесс висит в загруженных процессах и не дает правильно закрыть терминальную сессию.
Почему-то в операционной системе Windows Server по умолчанию этот процесс не относится к терминальным процессам, а является системным, из-за чего обычному пользователю удаленного рабочего стола завершить его просто не дано.
Чтобы насильно объявить splwow64.exe процессом, который принадлежит к терминальной сессии, нужно отредактировать системный реестр:
- открываем реестр на сервере терминалов regedit;
- ищем ветку [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs]
- создаем параметр splwow64.exe, типа DWORD (битность любая) и присваиваем ему значение 0 (ноль).
После этих действий операционная система будет правильно закрывать терминальную сессию при закрытии удаленно запущенного приложения.
P.S. Вообще в этой ветке можно размещать любые процессы, которые вы хотите, чтобы обязательно относились к терминальному серверу и закрывались вместе с закрытием соответствующей терминальной сессии.
P.S. Не смотря на то, что компания Apple в последнее время не сильно удивляет своих поклонников какими-то новыми инновационными гаджетами, ей удается удерживать лидера рынка мобильных телефонов по всему миру. Apple цены практически не падают и все их устройства, даже начиная с самых первых, ценятся до сих пор. До этого остальным компаниям мобильного рынка пока далеко.
- Драйвера на видеокарты Nvidia, Radeon, Intel и VIA Chrome в Linux Ubuntu
- Графическая оболочка компиляции программ в Linux Ubuntu
- Команда mount в Linux или все о монтировании разделов, дисков, образов ISO и SMB ресурсов.
- Установка и настройка веб сервера XAMPP
- Проверка Linux на наличие руткитов
- Как правильно выбрать коммутатор?
- Как в CentOS добавить второй IP-адрес?