Проблема с печатью через TSEasyPrint в терминале: появляются лишние принтеры и порты Inactive TS Port

Столкнулись мы тут с проблемой, когда на настроенном терминальном сервере с EasyPrint кроме собственного перенаправленного принтера видны еще и другие принтеры. Кроме того, всё это сопровождается «тормозами» в работе.
Заглянув в свойства сервера печати, в разделе «Порты» обнаружил множество портов «Inactive TS Port», на которых «висят» те самые отсутствующие сетевые принтеры, которые на этом сервере терминалов не установлены.
 Inactive TS Port на терминальном сервере Inactive TS Port на терминальном сервере

Есть у меня подозрение (к сожалению, это не 100%-ная уверенность), что появление этих портов связано с незавершенными, а просто отключенными терминальными сессиями. Ещё раз проверил конфигурацию сервера узла сеансов удаленных рабочих столов, поставил принудительное завершение сеанса при отключении или разрыве сессии:

Настройки терминального сервераНастройки терминального сервера

Следующий шаг в борьбе — удаление ненужных «зависших» принтеров. Открываем реестр, в нем находим ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers и безжалостно (но аккуратно) удаляем оттуда всё ненужное, оставив только Microsoft XPS Document Writer.

Но это еще не всё. Теперь осталось найти и удалить сами неактивные TS-порты (Inactive TS Ports). При попытке удалить их «влоб», из окна свойств сервера печати получаем сообщение о невозможности это сделать.
Но мы пойдём другим путём (с) и залезем в реестр. Все наши неактивные порты находятся здесь: HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{28d78fad-5a12-11d1-ae5b-0000f803a8c2}\. Посмотрели? Удивились их количеству? А теперь скажем «Спасибо» замечательным людям, которые написали простую, но такую нужную в 5 утра программку InactiveTSPortList, удаляющую эти порты. Синтаксис простой: получить список:
InactiveTSPortList.latest /r
удалить:
InactiveTSPortList.latest /d

Теперь перезагружаем спулер печати (через службы или набрав в командной строке net stop spooler && net start spooler) и радуемся отсутствию неактивных портов.

Кстати, в программе InactiveTSPortList после очистки нужно нажать произвольную кнопку для подтверждения. Есть версия, не требующая подтверждения, её можно добавить в назначенные задания и выполнять, например, каждую ночь.

Изменено: 18.10.2012

Johnny:
Похожая заметка