На операционной системе Windows server 2003 администраторы всегда сталкивались с проблемами печати на клиентских машинах, подключенных по протоколу RDP (Remote Desktop Protocol). В версии 2008 R2 microsoft позоботился об этом и внедрил систему печати Easy Print.
Печать через Terminal Services (устаревшая технология)
При использовании этой службы приходилось устанавливать драйвер на каждый принтер, который использовал пользователь при подключении по удаленному сеансу. Одно дело если у вас на всех компьютерах установлена одна модель принтера или используется один сетевой принтер. В этом случае не возникает проблем. Но как правило такое бывает редко и чаще всего образуются новые места с локальными принтерами разных производителей. В конечном итоге на сервере образуется каша драйверов, которые конфликтуют с собой.
Печать через Easy Print (мой выбор)
Тут всё просто как ни когда. Технология Terminal Services Easy Print использует формат файла Microsoft XML Paper Specification (XPS), который передается на компьютер пользователя и отправляется на печать, используя локальный драйвера принтера.
Настройка на стороне сервера (windows server 2008 R2)
По умолчанию удаленный рабочий стол в windows server 2008 использует компонент Easy Print. Если на стороне клиента эта система не поддерживается, то выполняется поиск подходящего драйвера на сервере. Поэтому особой настройки на сервере нет, просто проверка необходимых условий.
1. Проверяем, что установлен Microsoft XPS. Пуск -> Панель управления -> Устройства и принтеры. Выделяем Microsoft XPS Document Writer и жмем Свойства сервера печати, вклада Драйверы. Лишние можно удалить.
2. Проверяем, что не отключено значение «По умолчанию выбрать основной принтер клиента». Диспетчер сервера -> Конфигурация сервера узла сеансов удаленных рабочих столов. Вкладка Параметры клиента.
3. Для себя установил значение «Перенаправлять только используемый по умолчанию принтер». Заходим в редактор локальной групповой политики. Пуск -> Выполнить -> Gpedit.
Политика «Локальный компьютер» -> Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров
Настройка на стороне клиента (Windows XP Home Edition)
Для клиента необходимо установить всего два компонента:
1. Программа «Подключение к удаленному рабочему столу» версии не ниже 6.1
2. Microsoft .NET Framework версии не ниже 3.0 с пакетом обновления 1
В Операционной системе Windows 7 (если вы устанавливали обновления), то все эти компоненты уже присутствуют. Поэтому рассмотрим настройку на примере Windows XP Home Edition.
Узнать свою версию RDP Client можно через файл mstsc.exe который находится по адресу: C:/Windows/System32/mstsc.exe. Достаточно найти этот файл, нажать на него правой кнопкой мыши и выбрать Свойства.
В моем случае версия оказалась ниже. Идем на сайт Microsoft и скачиваем обновление.
http://www.microsoft.com/ru-ru/download/details.aspx?id=20609
После установки получаем нужный результат.
Версию Microsoft .NET Framework можно проверить здесь: http://support.microsoft.com/kb/318785/ru
Я не стал мучаться, а просто скачал и установил: http://www.microsoft.com/ru-ru/download/details.aspx?id=21
В итоге получаем приятный результат без каких-либо глюков.
Проверено на множестве принтеров. Таких как Canon LBP 6000B; HP LJ 1320, 1300, P1020, 1160; Kyosera FS1040;
First published on CloudBlogs on Sep, 28 2009
What’s new in Windows 7?
Easy Print Redirection was available for Windows Server 2008 TS only and it was not available when connecting to computers running Windows Vista. Now it will also be available when connecting to Ultimate/Enterprise editions of Windows 7 and Windows Server 2008 R2 Remote Desktop Session Host servers. In addition, we’re happy to announce that with Win7 / WS08 R2, Easy Print no longer has a dependency on .NET Framework — a common request from customers that didn’t want to install .NET on all clients from which they wanted to print. The XPS format to GDI conversion was done via .NET Framework before, but for Win7 / WS08 R2 the operating system does this conversion itself.
For the full documentation about how Easy Print works, refer to this three-part blog :
http://blogs.msdn.com/rds/archive/2007/04/26/introducing-terminal-services-easy-print-part-1.as…
http://blogs.msdn.com/rds/archive/2007/05/03/introducing-terminal-services-easy-print-part-2.as…
http://blogs.msdn.com/rds/archive/2007/10/05/introducing-terminal-services-easy-print-part-3.as…
Remote Desktop Easy Print configuration properties:
The following table displays the Client/Server combinations that support Easy Print.
|
|
|
|
|
Client : (1), (2) |
Client : (1), (2) |
Client : (1), (2) |
|
Client : (1), (2) |
Client : (1), (2) |
Client : (1), (2) |
|
Server : (3) |
Server : (4) |
|
|
Client : (2) |
Client : (2) |
Client : (2) |
|
Server : (3) |
Server : (4) |
(1) RDC 6.1 or above (Windows XP with Service Pack 3 and above includes this).
(2) Even if RDC 6.1 or above is used,
the user must install a supported version of .NET Framework separately
. Microsoft .NET Framework 3.5 (which includes .NET Framework 3.0 SP1) can be downloaded from the Microsoft Download Center (
http://go.microsoft.com/fwlink/?LinkId=109422
).
*In Windows Vista SP2 with RDC 7.0 and
KB971644
installed, .NET Framework is not required
(3) Terminal Services role.
(4) Remote Desktop Session Host Role.
If all the requirements are met, the Easy Print driver is listed in the Model field of the redirected printer’s Properties dialog.
Troubleshooting:
-
If you experience formatting problems using Easy Print.
Refer to the KB- 954744 article athttp://support.microsoft.com/kb/954744
(related: KB954743).
Refer to the KB- 970603 article athttp://support.microsoft.com/kb/970603
Refer to the KB- 959442 article at
http://support.microsoft.com/kb/959442
-
If the client printers are not redirected as Easy Print:
- First check the RDP version on the RDP client computer as well as the .NET framework version with respect to the operating system used (as explained above). Also verify that the RD Session Host / Terminal Server role is installed if the host computer is running Windows Server 2008 R2 or Windows Server 2008.
-
Group Policy must be correctly set to enable Easy Print on the Server. The policy location is “Computer Configuration -> Administrative templates -Windows Components -> Remote Desktop Services > Remote Desktop Session Host -> Printer Redirection”. The setting “Use Remote Desktop Easy Print printer driver first” must be set to “Enabled” for Easy Print redirection, and it has to be “Disabled” for Legacy Print. For “Not configured”, Easy Print is chosen by default.
- Check The Remote Desktop Configuration Tool (tsconfig.msc) settings to ensure that the “Windows Printer” option is not disabled (it is not disabled by default).
- Make sure that the “Printers” check box in the client (mstsc.exe) window on the “Local Resources” tab is checked. The corresponding setting in the associated RDP file is “redirectprinters:i:1”.
-
Ensure that the spooler service is running on both the RDP Client & Server.
Windows Server 2008 added the ability for an Admin to configure spooler security and Windows 7/Windows Server 2008 R2 adds the UI for this. Therefore, it would be possible to alter the RDP server’s spooler security descriptor which might prevent RDP client printers from being redirected on the session. The spooler security descriptor must contain the “AU” (Authenticated User) ACL (Access Control List) which allows any authenticated user to open the spooler service for reading operations. Therefore,
if that ACL is missing from the spooler security descriptor
, it must be
added
like the example below using the command prompt (elevated).
> sc sdshow spooler
D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
> sc sdset spooler D:
(A;;CCLCSWLOCRRC;;;AU)
(A;;CCDCLCSWRPWPDTLOCRSD
RCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
[SC] SetServiceObjectSecurity SUCCESS - If you connect over RD Gateway, ensure that the policy that disables printer redirection is turned off.
-
If everything listed so far is correct and you still have a redirection problem, check the event logs.
Some of the events to look for are:
Event ID
Message
Explanation
1105
Printer security information for the printer could not be set.
1109
The printer could not be set as the default printer.
The default client printer and the default printer in the RDP session must be the same.
1111
The driver required for the printer is unknown. Contact the administrator to install the driver before you log in again.
If the Easy Print driver is missing in the host, this event will be logged.
1116
The printer cannot be redirected by using Remote Desktop Easy Print.
The client computer may not have a version of the Remote Desktop Connection client or Microsoft .NET Framework installed that supports this driver.
Make sure you’ve met all the requirements in the table above.
1103
An internal communication error occurred. Redirected printing will no longer function for a single user session. Check the status of the Remote Desktop Device Redirector in the System folder of Device Manager.
1124
The number of printers per session limit was reached.
-
If the number of redirected printers is less than the number of the RDP client printers.
The maximum number of printers that can be redirected is controlled by the registry key “MaxPrintersPerSession REG_DWORD” which is under the node “HKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services”.
The default value for this is 20 printers per session. -
If Easy Print is unable to print on a domain controller.
Refer to the Knowledge Base Article 968605 athttp://support.microsoft.com/kb/968605/EN-US
-
If the client printer is redirected as Easy Print and the user is unable to stop a print job on the redirected printer.
Take ownership of the printer and allow the “Print” & “Manage printers” permissions. But note that when logged off from the RD Session, the remote printer settings are not retained.
Минимальные требования для клиентских ПК для использования универсального драйвера печати Easy Print таковы:
- Microsoft Windows XP SP3, Microsoft Windows Vista SP1, Microsoft Windows 7
- Средство подключения к удаленному рабочему столу (RDP Client) версии не ниже 6.1 (6.0.6001)
Этот компонент распространяется в составе SP3 для Windows XP и SP1 для Windows Vista - Microsoft .NET Framework 3.0 с пакетом обновления 1 (SP1) (можно использовать Microsoft .NET Framework 3.5)
Распространяется через WSUS, хотя может быть установлен и вручную.
Далее…при подключении клиента к серверу в свойствах RDP клиента на закладке «Локальные ресурсы» должно быть включено перенаправление принтеров.
Обратите также внимание на то, что в свойствах учётной записи пользователя в домене (Закладка «Среда») должны быть включены опции «Подключение принтеров при входе» и «По умолчанию выбрать основной принтер клиента». Это грабли на которые я сам однажды наступил )))
Поведение системы печати служб терминалов Windows Server 2008 по умолчанию предполагает использование драйвера Easy Print для всех клиентских принтеров.
Практика показала что не во всех случаях драйвер Easy Print работает корректно (например при некоторых сценариях съезжают поля при печати документов или вовсе не печатаются некоторые печатные формы из 1С). Для решения этой проблемы на наших терминальных серверах мы изменили настройки системы печати по умолчанию на следующий режим работы: при подключении клиента к серверу служба печати сначала пытается найти родной драйвер для каждого принтера клиента, если находит — использует его, если не находит использует для этого принтера драйвер Easy Print.
На сервер установлены последние версии драйверов основных используемых моделей принтеров. Для более корректного взаимодействия служб печати клиента и сервера рекомендуется использовать одинаковые версии драйверов на сервере и на клиенте.
Разрешение проблем в работе Easy Print на Windows Server 2008 / 2008 R2
В случае проблем с перенаправлением принтеров клиента в терминальную сессию с помощью Easy Print необходимо выполнить нижеописанный ряд проверок:
- Проверяем есть ли на клиентском компьютере требуемая для работы Easy Print версия .NET framework.
- Проверяем на клиенте то, что в свойствах запускаемого RDC клиента (mstsc.exe) включена опция перенаправления принтеров клиента на закладке «Локальные ресурсы». Если вместо клиента мы запускаем настроенный RDP ярлык то открываем его в текстовом редакторе и убеждаемся в том что присутствует опция перенаправления принтеров клиента в виде строки: redirectprinters:i:1
- Проверяем свойства доменной учетной записи пользователя. Как было отмечено ранее, в свойствах учётной записи пользователя в домене (Закладка «Среда») должны быть включены опции «Подключение принтеров при входе» и «По умолчанию выбрать основной принтер клиента».
- Проверяем как сконфигурированы групповые политики влияющие на Easy Print на терминальном сервере. Соответствующий раздел GPO можно найти по пути: Computer Configuration -> Administrative templates -Windows Components -> Remote Desktop Services > Remote Desktop Session Host -> Printer Redirection.
Опция «Use Remote Desktop Easy Print printer driver first» должна быть включена для работы редиректа принтеров с приоритетным использованием драйвера Easy Print или выключена в том случае если вы хотите использовать специально установленные драйвера принтеров на сервере. - Проверяем конфигурацию терминального сервера (оснастка «Remote Desktop Configuration Tool» или tsconfig.msc) на предмет того, что опция редиректа “Windows Printer” не отмечена как отключенная.
- Проверяем что и на клиенте и на сервера запущена служба очереди печати (spooler service). Если служба запущена то проверяем корректность установленных прав на данную службу. Ниже приведен пример того как должны выглядеть правильные настройки безопасности службы очереди печати:
C:>sc sdshow spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)Если вывод команды отображения настроек безопасности отличен от указанного, например отсутствуют разрешения в дескрипторе безопасности для “AU” (Authenticated User), то устанавливаем необходимые для корректной работы службы права следующей командой
C:> sc sdset spooler D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
[SC] SetServiceObjectSecurity SUCCESSПосле установки разрешений необходимо перезагрузить компьютер.
- Если подключение клиента производится через RD Gateway проверяем что на сервере RD Gateway выключена опция запрета перенаправления клиентских принтеров.
- Если у клиента большое количество принтеров и они перенаправляются в ограниченном количестве, то стоит обратить внимание на значение ключа реестра MaxPrintersPerSession (REG_DWORD) в ветке HKLMSoftwarePoliciesMicrosoftWindows NTTerminal Services. По умолчанию это значение равно 20 (т.е. не больше 20 принтеров на одну сессию).
Дополнительные ссылки:
- Некорректная печать документов содержащих страницы со смешанной ориентацией.
Article ID: 954744 — Last Review: November 11, 2008 — Revision: 1.0
FIX: Some pages are printed in the incorrect orientation when you use Terminal Services Easy Print to print a document that contains both portrait-oriented pages and landscape-oriented pages
http://support.microsoft.com/kb/954744 - Некорректная печать документов в формате PDF.
Article ID: 970603 — Last Review: June 22, 2009 — Revision: 1.0
The content of a printout is different when you print a PDF document by using Terminal Services Easy Print in a Terminal Services (TS) session in Windows Vista or Windows Server 2008
http://support.microsoft.com/kb/970603 - Некорректная печать полей страниц документов.
Article ID: 959442 — Last Review: December 23, 2008 — Revision: 1.0
The edges of a document are truncated when you try to print the document by using Terminal Services Easy Print from a client computer that is running Windows XP SP3, Windows Vista SP1, or Windows Server 2008
http://support.microsoft.com/kb/959442 - Не работает печать на перенаправленных принтерах если роль терминального сервера установлена на контроллере домена.
Article ID: 968605 — Last Review: March 4, 2009 — Revision: 1.0
Terminal Server Easy Print not printing
http://support.microsoft.com/kb/968605/EN-US
Использованный материал:
Remote Desktop Services (Terminal Services) Team Blog : Using Remote Desktop Easy Print in Windows 7 and Windows Server 2008 R2
Заходим в терминал, нажимаем ПУСК -> Выполнить (или нажать Win+R)
Набираем в окне: gpedit.msc (редактор реестра)
Находим ветку реестра: «Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров»
В Английском интерфейсе: «Computer Configuration -> Administrative Templates -> Windows Components -> Terminal Services -> Terminal Server -> Printer Redirection»
Отключаем параметр: «Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола»
В Английском интерфейсе: «Use Terminal Services Easy Print printer driver first»
Для оперативного применения политики выполните команду в терминале (нажимаем ПУСК -> Выполнить или нажать Win+R) : gpupdate /force или перезагрузите терминальный сервер.
Готово!
Теперь при входе пользователя в терминал принтер будет перенаправляться с установленными на сервере драйверами.
ВАЖНО: позаботьтесь о том, чтобы на терминальном сервере присутствовал необходимый драйвер принтера!!!.
- Windows 2008 server, Терминальный сервер
- терминальный сервер