Неправильно закрываются терминальные сессии после закрытия приложения
Наверное, во всех больших организациях доступ в 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_MACHINESYSTEMCurrentControlSetControlTerminal ServerSysProcs]
- создаем параметр splwow64.exe, типа DWORD (битность любая) и присваиваем ему значение 0 (ноль).
После этих действий операционная система будет правильно закрывать терминальную сессию при закрытии удаленно запущенного приложения.
P.S. Вообще в этой ветке можно размещать любые процессы, которые вы хотите, чтобы обязательно относились к терминальному серверу и закрывались вместе с закрытием соответствующей терминальной сессии.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен
Комментарии (0)