Pull to refresh

Ускорение печати из терминальной сессии Windows Server или доработка EasyPrint напильником

Reading time 3 min
Views 42K
И вот он настал, этот день, когда в очередной раз, ожидая распечатки от томно подмигивающего принтера, я, наконец, решил, что мое терпение не безгранично. Посвящается тем, кого тоже достала медленная печать на перенаправленных принтерах. Все знают про достоинства технологии EasyPrint, теперь поговорим о ее недостатках и методах борьбы с ними.

Задачей технологии EasyPrint является преобразование контента, выводимого на печать, в xps формат и передача его на клиентский компьютер, откуда он и будет напечатан с помощью родного драйвера. Проблема в том, что преобразование и передача, прибавившего в весе от такого преобразования, потока занимает слишком много времени. За универсальность приходится платить.

Решение состоит в использовании на сервере родных драйверов для каждого принтера, это позволяет осуществлять печатать напрямую, получая от клиента только физический адрес принтера. Сразу отмечу, что такое решение связано с риском превратить сервер в помойку драйверов, поэтому эти моменты нужно отслеживать. Ну и, понятно, что должен существовать драйвер нужного принтера для x64 систем (думаю, что x86 на серверах уже неактуально).

Перейдем от теории к практике.

Добавляем администратора в группу «Операторы печати», чтобы видеть перенаправленные принтеры всех пользователей.

Отключаем преимущественное использование EasyPrint. Запускаем оснастку локальной политики (gpedit.msc), для доменов нужно использовать доменную политику. Переходим в Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров и устанавливаем политику «Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола» в «отключено».

Запускаем оснастку «Управление печатью» (printmanagement.msc) и добавляем драйверы нужных принтеров на сервер печати.

Очень важно: название принтера в драйвере должно в точности совпадать с названием принтера в драйвере на клиентской машине, иначе перенаправленный принтер не подхватит драйвер на сервере. Проверить, используется ли драйвер EasyPrint для конкретного перенаправленного принтера, мы можем в свойствах этого принтера в оснастке «Устройства и принтеры» (после установки драйвера на сервер, для его использования пользователь должен перелогиниться на сервере). Если название принтеров в драйверах не совпадают, то запускаем редактор реестра, переходим на [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3] и меняем название нужного драйвера (после этого нужна перезагрузка). Благодаря такому твику, мы можем использовать на сервере нужный нам драйвер, отличный от клиентского. Для нужных мне принтеров HP я подобрал драйверы с одинаковым названием для клиентов (Windows XP) и для сервера (Windows Server 2008R2), использовав драйвера для разных редакций Windows Vista с сайта HP. Ленивые могут просто использовать драйвер от Microsoft, исправив его название в реестре.

Если у вас клиенты x64 с драйверами из поставки Windows или из Windows update, то есть большая вероятность, что они автоматически подтянутся на сервер при подключении клиента. Поэтому следите за установленными драйверами с помощью оснастки «Управление печатью». Еще один твик – если у вас подтянулся ненужный драйвер, то вы можете удалить его из оснастки, не удаляя package, а ссылку на package удалить в этой ветке реестра [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows x64\DriverPackages]. Тогда при следующем подключении этот драйвер не будет снова устанавливаться, и печать на этом принтере будет происходить средствами EasyPrint.
Слишком подробно не описывал, думаю, что читатели «в теме», если есть вопросы — задавайте.
Tags:
Hubs:
+10
Comments 32
Comments Comments 32

Articles