"Идеально, если бы это был один и тот же мужик."
Мужик сказал, мужик сделал.
splwow64.exe – это программная прослойка, которая позволяет 32-битным приложениям соединиться с 64-битным диспетчером службы очереди печати.
Многим покажется странным то, что этот процесс вызвал у меня подозрения. Все недоверчивые люди могут от имени Администраторапоследовательно позавершать все запущенные процессы пользователя, у которого зависла терминальная сессия. После завершения процесса splwow64.exe, сессия сама закроется, как ей и положено.
Получается что у пользователя, открывшего терминальную сессию, нет полномочий для завершения этого процесса. Экая, несправедливость…
Проблема найдена, осталось найти ее решение.
Решение
Ищем в системном реестре ветку с настройками терминального сервера [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]. Из всех параметров, нас интересует вложенная ветка SysProcs. Эта ветка служит для перечисления всех процессов и библиотек, которые нужно насильно отнести к пользовательским и дать возможность управлять ими самому пользователю.
По умолчанию эта ветка пустая. Создаем 32`ух битный dword-параметр с названием мучившего нас процесса – splwow64.exe. Можете еще накидать процессы, которые покажутся Вам странными.
Так как это ОС Windows, то не лишним будет перезагрузить сервер, хотя все должно работать и так.
При запуске прикладной программы (ПП) в момент подключения к удаленному рабочему столу (для нас скорее всего 1С), случается что по завершении ПП, терминальная сессия “зависает” на сервере (на стороне клиента выглядит как незакрытое окно подключения к удаленному рабочему столу с пустым рабочим столом, у меня такое случилось на сервере Win 2008R2 x64). После анализа выяснилось, что в моем случае, незакрытым остается процесс SplWOW64.exe, но предлагаемое решение подходит для любых привордящих к “подвисанию” приложений в терминальной сессии.
1. Запускаем на сервере TaskMgr. переходим на закладку “Процессы” устанавливаем галку “Отображать процессы всех пользователей” нажимаем в заголовке таблицы на название колонки “Пользователи” (для сортировки процессов по пользователям) методом научного тыка находим проблемный процесс (закрываем по очереди и наблюдаем раекцию – после убивания процесса отключился пользователь? ОНО!)
1. Запускаем на сервере RegEdit
2. Ищем ветку “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs
3. Добавить парметр DWORD: ИМЯ_НЕУБИВАЕМОЙ_ПРОГРАММЫ (в моем случае SPLWOW64.EXE) со значением 0