Ускорение печати из терминальной сессии Windows Server или доработка 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.
Слишком подробно не описывал, думаю, что читатели «в теме», если есть вопросы — задавайте.
Комментарии (1)
27 августа 2016 в 16:04
0↑
↓
Эээ, доработка заключается тупо в отключении Easy Print и возврате к прежней системе печати?
С Easy Print конечно есть проблемы, но в основном это проблема старых принтеров с драйверами, не умеющими в XPS. С проблемами производительности не сталкивался — если уж работает, то работает нормально. Но возможно мне просто везло…
Тем не менее, пара полезных ключей реестра почерпнул, спасибо.