Почему зависает RDP-клиент при закрытии 1С?

Хотелось бы рассказать о проблеме, с которой столкнулся совершенно недавно. Я понимаю, что эта проблема, наверное, не сильно экзотическая и с ней сталкивается чуть ли не каждый системный администратор, но тем не менее, я столкнулся с ней впервые. Настраивая новый терминальный сервер на свеженьком сервере IBM я столкнулся с неприятным фактом – пользователь, работая с 1С 8.2 через терминальную сессию, закрывает клиента 1С и до бесконечности наблюдает синий экран. Получается, что при закрытии клиента 1С, терминальная сессия не закрывается, а просто напрочь зависает. Сессия завершается только по таймауту или после ручного сброса через учетку Администратора.

Врагов в конторе и так хватает, а тут еще и расширение намечается, в лице бухгалтерии, экономистов и финансового отдела. Чтобы не усугублять ситуацию, мною было решено срочно найти решение этой проблемы.

Исходные данные проблемы

Есть терминальный сервер IBM x3550 M4, на котором установлена операционная система Windows 2008 Server, 64-бита. Добавлена роль – терминальный сервер и создано несколько десятков однотипных учетных записей, которые обладают привилегиями Пользователь удаленного рабочего стола.

Все клиенты подключаются по протоколу RDP версии 7.0 с операционных систем Windows XP Home/Professional.

Вроде как стандартный набор для типовой, коммерческой организации, каких миллионы.

Поиски виновного

Создал себе нового пользователя удаленного рабочего стола, который бы никак не отличался от уже работающих с сервером и запустил 1С через удаленку. Пооткрывал документы и, как положено, закрыл 1С`ку. Сессия ожиданно повисла. Перелогинился под Администратором и полез в Диспетчер задач, чтобы посмотреть что же остается запущенным из процессов у страдающего пользователя.

Подозрения пали на странный процесс – splwow64.exe, который был запущен среди остальных нормальных процессов. Круглосуточная компьютерная помощь это подтвердила. Этот процесс был запущен у каждого пользователя, наверное, именно это и насторожило меня. Покопавшись в Интернетах, я понял, что:
notextile.

splwow64.exe – это программная прослойка, которая позволяет 32-битным приложениям соединиться с 64-битным диспетчером службы очереди печати.

Многим покажется странным то, что этот процесс вызвал у меня подозрения. Все недоверчивые люди могут от имени Администратора последовательно позавершать все запущенные процессы пользователя, у которого зависла терминальная сессия. После завершения процесса splwow64.exe, сессия сама закроется, как ей и положено.

Получается что у пользователя, открывшего терминальную сессию, нет полномочий для завершения этого процесса. Экая, несправедливость…

Проблема найдена, осталось найти ее решение.

Решение

Ищем в системном реестре ветку с настройками терминального сервера [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]. Из всех параметров, нас интересует вложенная ветка SysProcs. Эта ветка служит для перечисления всех процессов и библиотек, которые нужно насильно отнести к пользовательским и дать возможность управлять ими самому пользователю.

По умолчанию эта ветка пустая. Создаем 32`ух битный dword-параметр с названием мучившего нас процесса – splwow64.exe. Можете еще накидать процессы, которые покажутся Вам странными.

Так как это ОС Windows, то не лишним будет перезагрузить сервер, хотя все должно работать и так.

Этим примером я хотел бы показать, что работа системного администратора – это, в первую очередь, исследовательская работа, которая не должна сводиться только к тупому передиранию чужих скриптов и наработок. Иногда, приходиться работать и головой.

Комментарии:

  1. myr4ik07 опубликовал комментарий 15 Апрель 2013, 18:52 #

    Так это баг или …? Решение в сети совпадают с вашими?
    Решение интересное и добавлено в избранное. Спасибо.

    | Ответить
    • Mut@NT опубликовал комментарий 16 Апрель 2013, 05:58 #

      Скорее всего баг… По крайней мере я не вижу смысла делать этот процесс не подконтрольным терминальной сессии

      | Ответить
  2. Muxa опубликовал комментарий 29 Январь 2014, 14:32 #

    Друг, большое тебе спасибо. Выручил сильно !!!

    | Ответить
    • itshaman опубликовал комментарий 9 Февраль 2014, 19:21 #

      Рад, что смог помочь

      | Ответить
  3. Бредман опубликовал комментарий 9 Февраль 2014, 16:58 #

    Спасибо, очень помогло!!

    | Ответить
    • itshaman опубликовал комментарий 9 Февраль 2014, 19:20 #

      Пожалуйста

      | Ответить
  4. Вадим опубликовал комментарий 23 Октябрь 2015, 16:41 #

    а мне не помогает. в этой ветке есть параметр с указанным названием, но все равно виснет 2003-64 сервак после выхода юзеров. пришлось убрать кнопки логофф у всех и тупо закрывать окно.

    | Ответить
Имя
e-mail
Сайт
Текст комментария: