Ошибка при печати в терминальном

Как решить проблемы подсистемы печати в терминальном сервере

Время на прочтение
3 мин

Количество просмотров 283K

Приветствую, %habrausername%!

Сегодня я бы хотел поделиться своим опытом устранения проблем печати на терминальном сервере Microsoft.

Подробности под катом.

Вместо Intro

Наверняка, почти каждый системный администратор, работающий с Windows и, в частности, с терминальным сервером, сталкивался с проблемами печати.
Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать — ничего не происходит!». Идем смотреть логи и видим следующую картину:

image

Знакомо? Никаких подробностей, ничего — гадайте, господа администраторы! На форумах в интернете полно вопросов по этой теме и очень мало полных, структурированных ответов. Что ж, попробуем собрать в кучу все варианты решений.

Причины и решения

Итак, из-за чего может происходить подобная ситуация? Большую часть подобных ситуаций вызывают установленные на сервере драйверы.

  • Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
  • Убедитесь, что включена изоляция драйверов
  • Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
  • Попробуйте решения сторонних компаний

А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».

image

Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.

Идентичные драйвера

Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера необходимо брать с официальных страниц изготовителя принтера. Так же еще один момент — стабильнее всего ведут себя PCL5. Если есть возможность выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно, серверу и клиенту).

Изоляция драйверов

В Windows 2008 появилась замечательная возможность изоляции драйверов принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)

Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики (gpedit.msc) и пройти следующим путем: «Параметры компьютера -> Административные шаблоны -> Принтеры». Находим и включаем следующие пункты:

  • Выполнить драйверы принтеров в изолированных процессах
  • Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати

Будет выглядеть следующим образом:

image

TS Easy Print

Видимо, вняв наконец стенаниям системных администраторов, компания Microsoft решила что-то сделать с необходимостью ставить зоопарк драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print. Ключевой особенностью является, то, что больше нам не нужно устанавливать на сервер драйвера для каждого принтера — вместо этого используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
Для того, чтобы явно определить, что мы хотим использовать на терминальном сервере TS Easy Print, необходимо пройти опять же в редактор локальной групповой политики (gpedit.msc) по следующему пути: «Параметры компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас интересуют следующие пункты, которые надо включить:

  • Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
  • Перенаправлять только используемый по умолчанию принтер клиента

Второй пункт необходим, если мы хотим, чтобы в терминале у клиента был только его принтер по умолчанию.

image

Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это можно сделать в менеджере роли «Службы печати и документов».
Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи, как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer». Именно они и отвечают за передачу печати на клиента.

Теперь перейдем к требованием на клиенте. Их всего два — использование протокола RDP версии не ниже 6.1 и .NET Framework 3.0 с пакетом обновления 1 (SP1). Больше от них ничего не требуется.

Решения сторонних компаний

Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers (сайт). Оно предоставляет клиент-серверную архитектуру.
Сервер ScrewDrivers — это компонент, который необходимо установить на серверы, на которых планируется использовать печать в терминальном сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях. Именно этот компонент позволяет создать на терминальном сервере виртуальные принтеры, которые соответствуют локальным принтерам пользователя.
В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).

Заключение

На этом хочу откланяться. Возможно информация не полная — буду рад услышать дополнения. Надеюсь, это поможет кому-то избежать часов нервотрепки ;)
Удачи!

  • Remove From My Forums

 locked

Проблема печати в сервере терминалов. Принтеры перенаправляются но не печатают

  • Вопрос

  • Доброго времени суток уважаемы товарищи. У меня имеется вопрос. Начитавшись всяких страшных статей, поверьте мне, читал, пришел к выводу что говорят в принципе про одно и тоже, но все же вопрос задам.

    Есть сервер на Windows 2008 R2. Имеется сервер терминалов. На сервере терминалов вращается 1С Предприятие.

    Так вот вопрос собственно. При подключении к терминалу, появляется перенаправленный принтер, вопросов нет. Этот принтер является принтером по умолчанию установленный на клиентском компьютере (WindowsXP SP3+Framework 3+RDP 6.1). Так вот, смысл в том, что
    ниодин перенаправленый принтер не печатает, зато отлично печатает когда на сервере установить принтер вручную. Ну т.е. сделать его сетевым. Тема про TS Easy print перешла в разряд какого то обсуждения без особых решений вопроса, может вы сможете помочь чем
    нить.

    Как заставить сервер печатать на перенаправленые принтера. Что то этот Easy print не особо хочет со мной дружуить… В общем кругом засада. Помогите pls. Заранее благоарен.

Ответы

  • Попробуйте вместо LaserJet 1320 PCL 6 поставить драйвер LaserJet 1320 PCL 5e


    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/

    • Помечено в качестве ответа

      20 декабря 2010 г. 8:19

  • На второй кося ответил я сам. Если у Вас возникает ошибка о том, что у вас отказано в доступе, вам необходимо дать права записи на папку c:windowssystem32spoolprinters. Т.е. Вы проходите  c:windowssystem32spool на папочке printers делаете правый
    щелчек мышко, затем переходите во вкладку безопасность, там необходимо добавить Everyone или Все, и дать им права на все. Для чего это делается. Вы предоставляете пользователям создавать очередь печати. система скажет о то, что вы пытаетесь изменить системные
    папки, вы соглашаетесь и о хвала вышнему, начинает печатать. Но смысл в том, что опробывано только у себя дома, ОС Windows 7. Не знаю что там будет на WindowsXP. Возникает данная незадача изза того, что вы заходите с компьютера, который не введет в контроллер
    домена, т.е. он не прошел авторизацию в AD, а у меня именно мой ноутик и не введен в AD, тож мой ноутик, домашний =). Так что вот такие вот пироги.

    По первой ошибке хотелось бы услышать комментарии. Заранее спасибо!

    • Помечено в качестве ответа
      Vinokurov Yuriy
      20 декабря 2010 г. 8:19

April 21 2010, 13:07

Category:

  • Компьютеры
  • Cancel

Решение проблем печати в терминальных сетях и терминальных службах.

http://www.tonk.ru/support/faq/printers02

             

Решение проблем печати в терминальных сетях и терминальных службах.

(статья затрагивает типичные проблемы возникающие при печати в терминальном режиме и содержит много ссылок на внешние источники технической документации (в основном на английском языке), описывабщие варианты решения возникающих проблем)

Известно, что одна из самых трудных задач для системных администраторов терминальных систем — обеспечение возможности печати для пользователей на локальные принтеры, поключенные к тонким клиентам или принтеры, для которых предоставлен общий доступ.

Windows Server 2008 Terminal Services предоставляет действительно захватывающую возможность решить эту проблему: Terminal Services Easy Print, и драйвер универсального принтера, основанный на XPS.

Тем не менее в современных терминальных сетях доля использования Windows 2003/2000 Terminal Servers остается достаточно большой. Если Вы, уважаемые друзья, используете в качестве ядра терминальной системы Вашего предприятия Windows 2003/2000 Terminal Servers, то эта статья — для Вас.

Итак, если клиентские принтеры не перенаправляются на терминальный сервер, для начала проверьте EventLog на наличие ошибок на терминальном сервере именно в тот момент, когда пользователь подключается к серверу. 

  1. Нет ошибок: перенаправление не происходит в принципе.
    Решение: проверяем  разрешено ли перенаправление принтеров в настройках RDP протокола на тонком клиенте и разрешена ли такая возможность в настройках сервера, при необходимости обновляем версию RDP клиента до последней (при использовании ПК) или смотрим эту статью — KB 302361 проясняющую вопросы перенаправления принтеров, подключенных к нестандартным портам, в том числе и TCP/IP портам (актуально для версий RDP клиента 5.1 или более старых). 
  2. Происходят ошибки 1111, 1105 и 1106 (на сервере W2K/2003) или 1102 (для Windows Server 2008 Terminal Services): перенаправление происходит с ошибками, так как на сервере не установлен драйвер принтера.
    Решение: чтобы Вы не делали, не устанавливайте драйверы сторонних производителей на терминальный сервер, за исключением подписанного драйвера Windows Hardware Quality Labs (WHQL). Большее количество драйверов, не отвечающее требованиям WHQL не подходит для терминального сервера, также известны случаи нарушения работоспособности spooler’a принтера. Как альтернатива, перенаправьте клиентский принтер с использованием оригинального драйвера, создав собственный файл ntprintsubs.inf, так как это написано в статье KB 239088 (для версии W2K/2003) или здесь (для Windows Server 2008).
    Если Вы используете Windows 2008, проверьте что опция Easy Print разрешена («по-умолчанию» она разрешена) и что используемые Вами терминалы отвечают требованиям для Easy Print (установлен RDP клиент версии 6.1 и .NET Framework 3.0 SP1).
  • Если у Вас наблюдаются проблемы с нарушениями в spooler сервисе, можно использовать утилиту Spooler Cleaner из Windows 2003 Resource Kit (cleanspl.exe). Утилита удалит все драйверы принтеров, принтеры, порты, мониторы портов, процессы печати и выводы на печать из spool файлов сервера.
  • Если Вы используете как минимум Windows 2003 SP1 на терминальном сервере, а Ваши принтеры поддерживают изначально PCL или PS, Вы можете настроить Fallback Printer Driver.
  • Если Вы используете клиенты Macintosh, Вы обязаны использовать драйвер PostScript, либо запускайте на всех Mac клиентах Mac RDC version 2.0, поддерживающий все принтеры. 
  • В том случае, когда используется x64 версия Windows на терминальном сервере, необходимо использовать 64-битные драйверы принтеров, так как это описано в статье KB 895612.
  • Если Вы управляете десятком терминальных серверов и двумя десятками разнородных принтеров, напишите руководству служебную записку с обоснованием приобретения систем управления печатью. Если в Вашей сети обеспечивается поддержка «Host based» принтеров, работающих на «Lightweight Imaging Device Interface Language» (LIDIL), крайне необходимо использовать ПО Universal Printer Driver.

Ссылки  документацию и практические руководства:

  • Статья Брайана Маддена (Brian Madden’s) Terminal Server Printing: Design and Configuration
  • Citrix Printing: Brush up on the basic best practices — руководство Кевина Буханица (Kevin Buchaniec)
  • Terminal Services and Printing White Paper (2003 год)
  • How Microsoft’s Windows 2003 SP1 Fallback Printer Driver Works — руководство Штефана Фирмюлена (Stefan Vermeulen)
  • 911913 — Как перенаправить клиентский принтер «по-умолчанию» в терминальной сессии на Windows Server 2003 Terminal Server(также подходит к версии W2K сервера)
  • 331055 — Лучшее практическое руководство по установке и использованию принтеров в среде Windows 2000 Terminal Services
  • 895612 — Как подобрать подходящий драйвер для принтера к компьютеру, работающему под управлением 64-битной версии Windows
  • 135406 — Практические шаги по удалению и переустановке драйверов принтеров (W2K / XP)
  • 286047 — Как печатать на локальном сетевом принтере в среде Terminal Services (W2K)
  • 305402 — РУКОВОДСТВО: Изменяем настройки печати на принт-сервере для всех пользователей 
  • 189105 — Как добавить принтер не используя пользовательские настройки в Windows
  • 291251 — Специфичные свойства принтера не показываемые в терминальных службах при перенаправлении 
  • 243942 — перенаправление принтеров терминальных служб,  изменение параметров которых не отображается в закладке Device Settings в Windows 2000 или Windows Server 2003

Средства решения проблем

  • CTX116474 — Print Detective — пересчитывает все установленные драйверы, включая детализированную информацию (по драйверам). Можно использовать для удаления отдельных драйверов 
  • CTX109374 — StressPrinters — инструмент, моделирующий ситуацию многократного автоматического перенаправления клиентских принтеров с использованием одного и того же драйвера

Решение проблем автоматического перенаправления

  • Terminal Server and Printer Redirection — troubleрешаем проблемы «шаг за шагом» 
  • Описание ошибок перенаправления принтеров
  • 239088 — описание ошибок 1111, 1105, и 1106, возникающих в логах терминальных служб серверных версий Windows 2000 или Windows Server 2003
  • Загрузите у Microsoft и попробуйте запустить Printer Driver Redirection Wizard
  • Printer Driver Matrix — от PrintingSupport
  • 276532 — описание ошибки 1103 в логе терминального сервера в Windows 2000
  • Event 1103 — Описание события «An internal communication error occurred. Redirected printing will no longer function»
  • 302361 — Описание проблемы почему порты принтеров не начинающиеся на COM, LPT  или USB не пернаправляются в сессиях терминальных служб
  • 329756 — Описание проблемы безопасности вызваемое RDP вто случае когда установлен параметр «FilterQueueType»
  • 929270 — Невозможно перенаправить принтер как принтер «по-умолчанию» в сессии терминальнойго сервера Windows Server 2003
  • 933996 — Описание проблемы невозможности установить как принтер «по-умолчанию» пользователем терминального сервера в Windows Server 2003

Другие разные проблемы

Windows 2008
  • 954399 — Сообщение об ошибке, возникающее при печати с использованием «Terminal Services Easy Print» с клиентского компьютера, подсоединеного к Windows Server 2008 («Tswpfwp.exe has stopped working»)
  • 954400 — RDP соединение обрывается при попытке напечатать на терминальный сервер в Windows Server 2008 
  • 960792 — Возникает сообщение об ошибке при попытке пользователем добавить принтер с использованием TCP/IP адреса или host-имени в Windows Server 2008 («Access is denied»)
  • 955560 — Ошибки и потери памяти в «Printer Spooler service» в момент установки и удаления сетевых принтеров в Windows Vista SP1 или Windows Server 2008
  • 959442 — Ошибка — срезаются края документа при попытке печати с использованием «Terminal Services Easy Print» с компьютера в Windows XP SP3, Windows Vista SP1 или Windows Server 2008
  • 962930 — Проблема невозможности печати в «Terminal Services Easy Print» на Windows server 2008 (Access is denied)
Windows 2003
  • 270005 — Драйверы OEM принтеров перезаписываются драйверами от Microsoft, используемые терминальными службами при перенаправлении печати 
  • 888196 — Ошибка — «Print Spooler service» часто останавливается, Dr. Watson записывает в логах сообщение об ошибке, а в логах  Windows 2000 Server или Windows Server 2003 (с установленным Citrix MF XP 1.0) появляется ошибка ID 7031 
  • 313733 — Почему файлы из буфера печати могут быть некорректно напечатаны в терминальной сессии
  • 317780 — Ошибка — задания печати, отправленные терминальными службами перенаправленных принтеров могут напечататься на других клиентских принтерах 
  • 826026 — Проблема — документы LPT1-принтеров различных пользователей терминального сервера печатаются на один и тот же принтер
  • 297883 — XL2000: Принтеры других пользователей доступна в терминальной сесии 
  • 313683 — XL2002: Принтеры других пользователей доступна в терминальной сесии
  • 268065 — Возникают ошибки 1100 или 1114 в терминальных службах в Windows 2000 Server или Windows Server 2003
  • 817870 — При отключении тонкого клиента в логе терминального сервера возникает ошибка 1109 
  • 909906 — Почему задание на печать самоудаляется на Windows Server 2003 с установленным Service Pack 1
  • 301444 — Сообщение об ошибке, которое может возникнуть в терминальной сессии при печати файлов в приложениях
  • 279452 — Невозможно добавить принтер в терминальной сессии — AppleTalk или сетовой принтер DLC
  • 870981 — Задания печати перенаправленные через принт-сервер могут не попасть на клиентский компьютер когда Вы устанавливаете сетевой принтер в Windows XP или Windows Server 2003
  • 911713 — Почему в Windows Server 2003 часто возникает ошибка ID 20 при печати на общий сетевой принтер 
  • 900090 — Ошибка — Замедление процесса буферизации заданий печати в терминальных службах в Windows Server 2003при печати перенаправленных принтеров, поключенных к тонким клиентам
  • 911028 — Проблема возникновения сообщения «Stop error » или пропадания объектов на странице печати при использовании 32-битных программ для печати документов в 64-битной версии Microsoft Windows
  • 840371 — Почему процессор сильно загружается при переполнении буферной памяти печати в момент когда пользователь завершает сессию на терминальном сервере с Windows Server 2003 или Windows 2000
  • 947477 — Ошибка — буферная память принтера от HP в Windows Server 2003 может самоочиститься 
  • 951009 — Почему приложения «зависают», документы не печатаются, а в логах Windows Server 2003 возникают ошибки ID 6162 или 61
Windows 2000
  • 822143 — Ошибка — Принтеры остаются активными на терминальном сервере после отключения (W2K)
  • 832219 — Ошибка — Пользователи не могут печатать после установки сервис-пака, обновления ПО принтера на сервере в Windows 2000
  • 918622 — Невозможно напечатать с терминального сервера после выполнения «Update Rollup 1» для Microsoft Windows 2000 Service Pack 4
  • 843259 — Возникновение ограничений печати для пользователя при печати на общий для терминального сервера принтер после перезапуска «Spooler service» в Windows 2000 — также смотрите этот документ — 826026
  • 831754 — Почему возникает сообщение об ошибке при попытке печати в теминальной сессии на общий сетевой принтер

  • 908506 — Проблема невозможности печати на сетевой принтер после установки обновления безопасности 896423 на сервер с  Windows 2000 с установленным Service Pack 4
  • 822834 — Ошибка — Буфер памяти вызывает чрезмерную загрузку процессора в момент выполнения процессов Winlogon.exe и Spoolsv.exe в Windows 2000 Terminal Server

http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q268065
http://support.microsoft.com/default.aspx?scid=kb;EN-US;302361
http://support.microsoft.com/kb/q264039/
http://support.microsoft.com/default.aspx?scid=kb;EN-US;911913

Особенности печати в Citrix

  • CTX108004 — Как разграничить права доступа для администраторов для управления автоперенаправленными принтерами 
  • CTX884335 — Как опубликовать Print Manager на Windows NT/2000/2003 Terminal Server
  • CTX681954 — Разрешение проблем автоматического перенаправления принтеров в Citrix ICA
  • CTX107137 — Разрешение проблем печати в среде Presentation Server 4.0
  • Printing — TechNotes — список известных проблем при печати в Citrix PS 4.0
  • CTX104692 — Ошибка — автоматически перенаправляется только клиентский принтер «по-умолчанию». Функция взаимодействис версией Java Client 8.x (или более поздней) не работает
  • CTX104375 — Описание проблемы когда принтер «по-умолчанию» некорректно перенаправляется в ICA сессии
  • CTX051476 — Разрешение проблем удаления автоперенаправленных принтеров
  • CTX105577 — Удаление драйверов принтеров и ошибок печати в логах 
  • CTX626451 — Образец файла WTSUPRN.INF для использования в автоматическом перенаправлении 
  • CTX107322 — Принтеры, сделанные HP для использования в Citrix Presentation Server 4.0 для Windows (включая сканеры и МФУ) 

Информация о драйверах печати сторонних производителей

  • 952065 — Описание проблемы невозможности установить драйверы сторонних производителей для кросс-архитектурной поддержки в средах Windows Vista или в Windows Server 2008
  • HP printers supported in Citrix XenApp Server environments — посмотрите, можно соотнести эти соотвествия и на терминальный службы 
  • HP Color LaserJet and LaserJet Printers — Заметки о работе драйверов принтеров в смешанных средах 
  • HP Deskjet, HP Business Inkjet, and HP Color Inkjet Printers — Операционные системы и принтеры, поддерживаемые Windows Terminal Server
  • HP DeskJet 895, 970, 990, 5550, and 6120 Series Printers and W2K TS — описание 
  • HP Designjet Printers — Совместимость с Windows Terminal Services
  • bpl11245 — «Подвисание» заданий печати и новая постановка на печать пери перезагрузке компьютеров с подключенными принтерами серии HP LaserJet 2200
  • HP Universal Print Driver Series for Windows — описание
  • Lexmark Printers — совместимость с Windows Server 2003
  • Brother MetaFrame Homepage
  • 267896 — Описание проблемы некорректной печати Adobe Acrobat .pdf документов в терминальной сессии 
  • Windows Print Migrator

Terminal Server Printer Redirection Wizard Tool

http://www.microsoft.com/downloads/en/details.aspx?familyid=9AD27BE9-40DB-484F-862E-38A094EEEAF7&displaylang=en

Программное обеспечение (в том числе и по управлению печатью) других производителей

  • Различия между некотороми решениями для универсальной печати — статья Вилко Ван Брагта (Wilco van Bragt)
  • Описание ThinPrint’s .print RDP Engine
  • Описание triCerat’s ScrewDrivers
  • Решение Print-IT от Provision Networks 
  • Описание UniPrint от INGENICA
  • Описание Net2Printer
  • DEFSET — бесплатная утилита для установки пользовательского принтера от «Ctrl-Alt-Del IT Consultancy»

Автор статьи не я, позаимствовано у http://lpine.org/

Перенаправление принтеров в терминалах (MS Terminal Services & Remote Desktop Services)

Часть первая, теория

Введение, «Что такое печать в терминальных службах»

1. Как включить

2. Групповые политики

3. Схемы «родной драйвер» и «драйвер подстановки»

4. Схема со Screwdrivers

5. Совместимые с терминалами принтеры

6. Печать через VPN

Часть вторая, решение проблем

1. Типы проблем с печатью в терминалах

2. Проблемы со спулером

3. Драйвер перенаправления

4. Реестр

5. Визард устранения проблем от Майкрософт

6. Если больше ничего не помогает, а печатать принтер должен

7. Печать на медленных каналах

8. Полезные ссылки

Что такое печать в терминальных службах

В 90-х Майкрософт разработал специальную роль для Windows NT 4.0 Server под названием Terminal Server. Роль оказалась популярной и востребованной. Функционал у неё довольно простой: используя специальное ПО mstsc.exe («Подключение к удалённому рабочему столу»), входящее в поставку всех современных версий и редакций клиентских ОС Windows (кроме, пожалуй, Windows Phone), можно подключаться по сети к удалённому серверу и видеть рабочий стол удалённого сервера и управлять им при помощи мышки и клавиатуры как своим собственным.

Особенно полезным оказалось то, что за одним сервером могут работать сотни пользователей через интернет, и у каждого будет на этом сервере свой собственный рабочий стол, а установленное на сервере программное обеспечение и его аппаратные ресурсы разделяются между всеми пользователями.

В отличие от множества других методов транспортировки изображения по сети (VNC, RAdmin, DameWare, Teamviewer, AMMYY Admin и проч.), майкрософтовские терминалы не гонят отсканированную с видеокарты графику, вместо этого они заново отрисовывают все окна на стороне клиента, пользуясь Windows API и проч, передавая по сети только текстовые команды типа «отрисовать такое-то окно такого-то размера с таким-то градиентом». В результате требования по ширине канала для работы очень низкие, и очень высокая скорость работы в стандартных оконных интерфейсах Windows. Впрочем, отличную от окошек графику терминалы гонят также, как и конкуренты, поэтому в терминалах всегда начинаются тормоза при попытке смотреть/редактировать видео и графику.

Протокол, по которому осуществляется передача данных с сервера терминалов на клиентскую рабочую станцию, называется RDP. С выходом OS Windows Server 2008 R2 терминалы переименовали в Microsoft Remote Desktop Services (службы удалённых рабочих столов). Но, как это обычно бывает в Майкрософт, переименование коснулось только поверхностного слоя, глубоко же внутри функции, ключи реестра и проч. по-прежнему называются на Terminal Services. Кстати, иногда бывает даже такое, что при троекратном переименовании продукта на самом поверхностном слое продукт имеет третье название, чуть глубже — второе, более старое, а на самом низком уровне абстрагирования — первое, ещё более старое, именно так обстоит дело с продуктом Forefront TMG, впрочем, не будем отвлекаться.

Существует и более серьёзная версия терминалов, которой занимается компания Citrix. Это решение для крупных компаний, держащих т.н. «фермы» терминальных серверов. За это решение платятся дополнительные деньги сверх уже заплаченных за лицензии на майкрософтовские терминалы, но оно серьёзно облегчает работу, т.к. позволяет централизованно управлять всей фермой, централизованно ставить софт и его настраивать, по-умному раскидывать юзеров между членами «фермы» и т.п. Это решение переименовывалось ещё большее количество раз, начиная от Citrix WinFrame, через MetaFrame, через Citrix Presentation Server, до Citrix XenApp. Протокол для этого решения называется ICA, однако, внутри он является тем же RDP (и потому для XenApp верно многое из того, что верно для RDP и наоборот), исходные коды которого MS лицензирует Цитриксу, без чего XenApp был бы, скорее всего, невозможен и Цитриксу пришлось бы довольствоваться унылым, тормозным и требовательным к ширине канала методом транспортировки десктопа, аналогичным тем, которые используются Radmin, Teamviewer и так далее.

Удалённый десктоп это прекрасно, но рано или поздно юзер сталкивается с тем, что из удалённых приложений ему нужно печатать на принтер. При этом редко кому и когда нужно печатать на принтер, который подключен к удалённому серверу терминалов, который от юзера находится нередко в сотнях и тысячах километров. Печатать нужно на свой, локальный принтер. Для решения этой задачи предлагались в разное время разные методы, все они были не без недостатков, порождающих различные проблемы, которые мы тут и постараемся исчерпывающе описать и предложить соответствующие им решения. Эти методы в разных контекстах называются «printer mapping», «printer redirection», « Easy Printing» а по-русски «перенаправление печати», «сопоставление принтеров» и т.д.

Поскольку аудиторией этого текста являются русскоязычные юзеры и админы, то большинство скринов будет на русском, тем более что в подавляющем большинстве организаций в России терминальные серверы стоят русифицированные, т.к. на них работают пользователи. Среди back-end серверов доля нерусифицированных, конечно, выше чем среди терминальных серверов.

1. Как включить печать в терминальных службах

Очевидное (опытные админы могут пропустить), а именно, как включить перенаправление печати, если оно не включено. На стороне клиента для подключения к серверу терминалов используется программа mstsc.exe, она же «Подключение к удалённому рабочему столу».

подключение к удаленному рабочему столу

Нажать на «параметры», в закладке «локальные ресурсы» убедиться, что стоит галка на «Принтеры». Не требует административных прав.

галка принтеры

На стороне сервера нужно запустить tscc.msc (в 2008 и выше tsconfig.msc), на RDP-Tcp нажать правую клавишу мыши, выбрать «Свойства» и в закладке «параметры клиента» убедиться, что НЕ стоит галка на отключить «Сопоставление принтеров». Это действие требует наличия прав администратора на сервере терминалов.

сопоставление принтеров

На этом всё, после выполнения этих нехитрых требований по мнению Майкрософт Вы можете печатать из удалённого рабочего стола на свой локально установленный принтер. В этом скриншоте показан удалённый рабочий стол, на который «пробросился» локально установленный принтер Samsung:

пробросили принтер samsung

Не пробросился? Читаем дальше.

2. Групповые политики

Бывает и такое, что галка на отключить «сопоставление принтеров» на предыдущем скриншоте стоит, а убрать её нельзя, т.к. надпись серая, или, говоря в англоязычной программистской терминологии, этот «checkbox» is «greyed out»:

групповые политики

Такое бывает, если настройками сервера терминалов управляют групповые политики (group policies). Если сервер терминалов является членом домена Windows (он же Active Directory Domain Services), а скорее всего это так, то для управления групповыми политиками нужно быть администратором домена. Для установки соответствующих настроек администратору домена следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:

Настройка политик GPedit.exe

Здесь следует обратить внимание на настройку «не разрешать перенаправление клиентских принтеров», она должна быть в состоянии «не задано» или «отключено».

3. Схемы «родной драйвер» и «драйвер подстановки»

Если настройки по перенаправлению принтеров выполнены как указано выше, то принтер будет перенаправляться ТОЛЬКО в том случае, если на терминальном сервере ТАКЖЕ установлены драйверы на принтер того производителя и той модели, который стоит у юзера локально. В противном случае перенаправляемый принтер на сервере терминалов скорее всего создан не будет, а в журнале событий «Система» появится сообщение от провайдера TermServDevices с кодом 1501 и содержанием, указывающим на то, что на терминальном сервере не установлен соответствующий драйвер.

Поэтому для работы перенаправления печати с сервера терминалов на локальный принтер следует ставить драйвер принтера и на локальном ПК, с которого осуществляется подключение, и на удалённом сервере, на который осуществляется подключение.

Но, такая схема работы имеет очевидные недостатки. Например, туговато приходится администраторам серверов, к которым подключаются сотни людей у многих из которых установлены самые разные принтеры. Такой сервер терминалов рано или поздно превращается в помойку из десятков и сотен драйверов принтеров, которые могут конфликтовать друг с другом и в конце концов вообще угробить всю подсистему печати целиком (о том, как её восстанавливать см. ниже главу про cleanspl). Кроме этого не на все принтеры, особенно принтеры для диапазона SOHO, существуют драйверы для серверных операционных систем, а драйверы для десктопных систем (таких как XP/Vista/7/8) часто не встают на соответствующие им серверные ОС (такие как 2003/2008/2008R2/2012). Ну и в конце концов установка драйверов это муторный процесс, которым администратору заниматься неохота.

Слава Гейтсу, существует и альтернативное решение, а именно, подстановочный драйвер. Дело в том, что несмотря на различия, большинство принтеров имеет много общего и, невероятно, но факт, на них можно печатать с использованием унифицированного PCL или PS драйвера. Подстановку унифицированного драйвера можно задать только с помощью групповых политик, поэтому для установки соответствующих настроек администратору следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:

подстановка универсального драйвера принтера

Если включить политику «Поведение сервера терминалов при выборе подходящего драйвера принтера» и в следующем окошке выбрать подстановку PCL и/или PS драйвера, то при подключении к серверу терминалов у юзера будет автоматически создаваться перенаправленный принтер, даже если на сервере соответствующий драйвер не установлен.

Увы, этот метод имеет своим недостатком то, что подстановочный драйвер сработает не для всех принтеров. Для большинства принтеров он работает, но для некоторых нет. Прежде всего этот метод не подойдёт для т.н. host-based драйверов принтеров, т.к. они не являются PCL- или PS- совместимыми. Иногда заставить печатать host-based принтеры всё-таки можно, установив на сервер драйверы для этих моделей, но некоторые модели не имеют драйверов для серверных OS. В ряде случаев эта проблема решаема, см. далее главу о Tricerat Screwdrivers. Подстановочный драйвер, если посмотреть на него внимательно, является драйвером HP DeskJet 500:

подстановочный драйвер HP DeskJet 500

С выходом ОС Windows Server 2008 Майкрософт представил решение Easy Printing, которое позиционировалось как панацея для многочисленных проблем с печатью в терминалах. Идея заключается в создании специального перенаправленного принтера с Easy Print драйвером, который печатает в XPS (Майкрософтовский открытый формат документов, призванный заменить pdf, но успеха не снискавший), а XPS затем переправляется на сторону клиента, где благополучно печатается на локальный принтер как XPS документ. В теории такой метод печати решил бы все проблемы, но на практике то ли Майкрософт этот метод до ума не довёл, то ли на него надавили производители принтеров и/или альтернативных решений для печати в терминалах, но Easy Printing проблем с печатью так и не решил: всё осталось как и раньше: подключаешь к терминальному серверу нового клиента и надеешься на то, что его принтер удастся «подружить» с терминалами, своего рода «connect and pray». Как бы то ни было, Easy Printing включается также через групповые политики, там же, где и драйвер подстановки:

Easy Printing

4. Схема со Screwdrivers

Поскольку проблем с печатью на терминалах всегда была адовая прорва (по данным некоторых ИТ аутсорсеров, проблемы с печатью это наиболее часто встречающиеся проблемы), свою нишу нашли компании, которые делали процесс печати из терминалов более удобным, а иногда и вообще его просто «делали», когда иначе печатать было просто невозможно.

Решение Tricerat Screwdrivers платное. Оно состоит из серверной части (ставится на сервере терминалов) и клиентской части (есть msi пакеты, удобные для масс-деплоймента через ГП или SCCM). Особых настроек не требует и обычно всё прекрасно работает с настройками по-умолчанию после установки на сервере и на всех клиентах. После простой установки обычно клиент оказывается способен печатать на свои принтеры, на которые не удавалось настроить печать без screwdrivers. Поскольку этой статьи тогда ещё не было написано, а спецов по терминальным серверам не так много, то настройка терминальной печати и решение проблем с ней могло затягиваться на часы и дни. Поэтому многие приняли разумное решение по радикальному решению проблем с терминальной печатью: купить и задеплоить Screwdrivers. Кроме собственно печати Screwdrivers позволяют осуществлять тонкий тюнинг терминальной печати, например, регулировать ширину канала для печати:

настройка Screwdrivers

Но… не всё оказалось так просто. Дело в том, что существуют некоторые, особо жадные производители принтеров (не будем говорить кто, хотя это Hewlett-Packard), которые СПЕЦИАЛЬНО (это не факт, а моё оценочное суждение) отрезают поддержку печати в терминалах на принтерах, позиционирующихся для рынка SOHO. Это всё делается, конечно, для повышения продаж, т.к. решение HP для случаев непечати в терминалах простое: покупайте новый, более дорогой девайс. Такие модели принтеров зачастую не печатают даже со screwdrivers и в этих случаях ничего сделать невозможно, только менять принтер на совместимый с терминалами. О том, как определить совместимость принтера с терминальной печатью рассказываем в следующей главе.

5. Совместимые с терминалами принтеры

Как правило, все современные принтеры любых производителей ценой хотя бы от 5 т.р. совместимы с печатью в терминалах, за исключением Hewlett-Packard. Если Вы верны традициям печати этой компании и хотите приобрести принтер непременно этого производителя, то существует специальный, регулярно обновляемый документ производства Citrix & HP, который легко ищется в Сети по ключевым словам «Citrix XenApp HPPrinters supported» (ссылку намеренно не даю, т.к. постоянно выходят новые версии и меняется URL). Здесь нам поможет информация из первого абзаца, а именно, тот факт, что XenApp есть надстройка над майкрософтовскими терминалами, позволяет с определённой долей уверенности утверждать, что принтеры, поддерживаемые в среде XenApp, скорее всего также будут печатать и в среде MS Terminal Services & MS Remote Desktop Services. Автору пока неизвестно ни об одном случае отклонения от этого правила, и принтеры, поддержка которых заявлена в этом документе, оказывались печатающими и в майкрософтовских терминалах.

Помимо HP, Citrix также поддерживает аналогичные списки и для устройств некоторых других производителей, например, для принтеров Xerox. По мнению автора, сам факт существования таких списков у Цитрикса свидетельствует о том, что производители, для устройств которых составляются такие списки, поддерживают печать в терминалах ПЛОХО. Именно поэтому Цитрикс и вынужден эти списки составлять и публиковать. Отсутствие таких списков в отношении устройств Samsung или Kyocera, по мнению автора, свидетельствует о том, что с печатью в терминалах у этих устройств всё в порядке. Автору, пожалуй, ни разу не доводилось встречать хоть сколько-нибудь серьёзных устройств (исключая понятные случаи вроде переносных персональных принтеров, всяких там древних струйников и т.п.) этих производителей, в которых терминальная печать была бы невозможна.

список совместимых принтеров citrix

Увы, список этот неполный и трудно понять, если, конечно, не привлекать к объяснению теории заговора, почему уже давно продающиеся модели принтеров долго не включаются в этот список. Однако, общее правило такое: если модели принтера в списке нет, то лучше не брать: существует значимая вероятность того, что принтер окажется несовместимым с печатью в терминалах.

6. Печать через VPN

Настроить печать на перенаправляемый принтер в терминалах так и не удалось? Есть гарантированно рабочее решение, которое будет работать с любым принтером, на который можно печатать через «службу доступа к общим папкам и принтерам», она же SMB. Для этого локальный принтер следует «расшарить» для общего доступа и установить VPN-канал между клиентским ПК и сервером. Самые простые варианты это RRAS на сервере и PPTP-клиент (встроенный в Windows) на клиентском ПК или OpenVPN. После установки канала необходимо просто подключить печать по сети на расшаренный на клиентском ПК принтер стандартными средствами, убедившись, что прохождению траффика SMB не препятствует firewall и прочее.

Таким же способом к серверу терминалов через VPN можно подключать сетевые принтеры, через «Стандартный порт TCP/IP», для чего нужно обеспечить прохождение порта TCP 9100, используемого для печати на сетевые принтеры.

Единственная возможная проблема с этим способом заключается в отсутствии драйверов для принтера под серверную OS, на которой развёрнуты службы терминалов. Если п. 2 и 3 также не помогают, то в этом случае точно поможет только приобретение нового принтера.

Часть II

1. Типы проблем с печатью в терминалах

Все проблемы с терминальной печатью можно условно разделить на несколько типов. Типы указаны в порядке приоритета при решении проблем с печатью, с учётом трудозатратности шага и вероятности возникновения проблемы именно такого типа.

а) Локальные проблемы с печатью. Для их решения нужно прежде всего убедиться, печатает ли принтер локально. Может, у него бумага кончилась или ещё что. Проблемы этого типа в настоящем руководстве не рассматриваются

б) Проблемы с отсутствием драйверов на сервере терминалов: никакие принтеры не перенаправляются, кроме тех, драйверы на которые входят в стандартную поставку Windows. Для решения проблем такого типа необходимо устанавливать драйверы на сервере и/или настраивать поведение сервера при отсутствующих драйверах (Easy Print и драйвер HP DeskJet 500), см. часть I, п. 2 и п. 3

в) Проблемы с отсутствием печати на успешно проброшенный принтер. Метод решения такого типа проблем следующий: смотрим какой драйвер подцепился к проброшенному принтеру, Easy Print или DeskJet 500, пробуем их менять местами; если не помогает, то ставим на сервер родной драйвер (если их больше 1, то последовательно пробуем все, т.к. в случае HP бывает, что старые драйверы работают, а в новых поддержка терминалов уже отрезана) и убеждаемся, что к проброшенному принтеру подцепился именно родной драйвер; если это не помогает, то продаём клиенту и разворачиваем Tricerat Screwdrivers, предварительно протестировав возможность печати через него в Trial версии; если это не помогает то увы, только замена принтера или печать через VPN, см. часть I, п. 6

Редко возникающие проблемы

2. Проблемы со спулером

Симптомы:

Служба Spooler, она же spoolsv.exe, он же «Диспетчер очереди печати» тупо останавливается без объяснения причин. При рестарте опять останавливается через несколько секунд. Такое часто бывает из-за кривых драйверов на дешёвые принтеры и часто случается на терминальных серверах, на которых используется схема без драйверов подстановки, т.е. устанавливаются драйверы на все модели принтеров, установленных у клиентов. Также могут быть и другие варианты, типа ни один принтер не пробрасывается, хотя драйверы стоят и т.п.

Что делать:

Поскольку указателя на то, из-за чего именно вылетает spooler в таких случаях обычно не бывает, то проще и быстрее всего полностью зачистить всю подсистему печати сервера и заново выполнить настройки печати и поставить драйверы. Для этого пригодится утилита cleanspl.exe из Resource Kit for Windows Server 2003. Запускаем, соглашаемся, утилита полностью выпиливает и зачищает всю подсистему печати сервера. В 2008 и выше не поддерживается, для этой ОС Майкрософт предлагает такое решение: http://support.microsoft.com/kb/2000007

После действия cleanspl.exe мониторы печати нужно восстанавливать вручную с новой аналогичной операционной системы:

Типовой файл реестра прилагается к этому документу. Достоверно известно, что для работы перенаправления печати в терминал требуется USB Monitor, см. ч. II, п. 4.

3. Драйвер перенаправления

Симптомы:

Не создаются перенаправляемые принтеры и в «диспетчере устройств» в «системных устройствах» отсутствует специальное устройство «перенаправитель устройства сервера терминалов», он же «remote desktop device redirector bus», в 2003 выглядит так:

перенаправитель устройства сервера терминалов

В 2008 R2 выглядит так:

перенаправитель устройства сервера терминалов server 2008

Что делать:

Переставлять драйвер редиректора, inf-файл поставляется вместе с системой, для установки можно воспользоваться утилитой devcon.exe (http://support.microsoft.com/kb/311272):

devcon -r install %windir%infmachine.inf rootrdpdr

Проверять через появление соотв. устройства в списке системных устройств девайс менеджера.

4. Реестр

Симптомы:

Не перенаправляются никакие принтеры. Из-за неверно выставленных прав на реестр или по иным причинам не выставлена правильно или отсутствует запись реестра.

Что делать:

В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwd создать запись типа DWORD fEnablePrintRDR и установить её в 1.

В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPrintMonitorsUSB Monitor создать запись типа «строковой параметр» Driver и установить её значение в usbmon.dll (сам файл правильной версии должен присутствовать в %windir%system32)

5. Визард устранения проблем от Майкрософт

Мне ни разу не помог, но на всякий случай Terminal Server Printer Redirection Wizard Tool

http://www.microsoft.com/en-us/download/details.aspx?id=5640

6. Если больше ничего не помогает, а печатать принтер должен

Стандартные проблемы: переставить последний сервис-пак и накатить обновления, выполнить sfc /scannow, убедиться что принтер таки может печатать на другом таком же терминальном сервере с такой же OS и т.п.

7. Печать на медленных каналах

Особенно касается всяких допотопных DSL модемов, 3G-модемов и т.п. Т.к. для работы терминала не требуется широкополосного доступа, то у пользователя может возникнуть ощущение, что с его интернетом всё ОК, до тех пор, пока он не начнёт печатать. Задание на печать может занимать несколько мегабайт и на медленном канале печататься спустя десятки минут после отправки на печать. Если такое поведение для клиента неприемлемо, можно попробовать Screwdrivers, который позволяет сжимать траффик печати, либо убедить его приобрести нормальный интернет.

8. Полезные ссылки

Группа проблем печати в терминалах: http://ts.veranoest.net/ts_printing.asp

Ключи реестра сервера терминалов: http://etutorials.org/Microsoft+Products/microsoft+windows+server+2003+terminal+services/Chapter+6+Registry/Registry+Keys+for+Terminal+Services/

Если не получилось — заказывайте мастера на выезд http://remont-kompjuterov-perm.ru/

Как решить проблемы подсистемы печати в терминальном сервере

Приветствую, %habrausername%!

Сегодня я бы хотел поделиться своим опытом устранения проблем печати на терминальном сервере Microsoft.

Подробности под катом.

Вместо Intro

Наверняка, почти каждый системный администратор, работающий с Windows и, в частности, с терминальным сервером, сталкивался с проблемами печати.
Разрывается телефон, у всех одна и та же проблема: «Нажимаю на печать — ничего не происходит!». Идем смотреть логи и видим следующую картину:

image

Знакомо? Никаких подробностей, ничего — гадайте, господа администраторы! На форумах в интернете полно вопросов по этой теме и очень мало полных, структурированных ответов. Что ж, попробуем собрать в кучу все варианты решений.

Причины и решения

Итак, из-за чего может происходить подобная ситуация? Большую часть подобных ситуаций вызывают установленные на сервере драйверы.

  • Необходимо помнить, что драйверы у клиентов и на сервере должны быть идентичны
  • Убедитесь, что включена изоляция драйверов
  • Удалите все драйвера на сервере и попробуйте использовать TS Easy Print
  • Попробуйте решения сторонних компаний

А теперь пройдемся подробнее по всем пунктам. Для начала установим на наш терминальный сервер роль «Службы печати и документов».

image

Это позволит нам удобно управлять драйверами и принтерами, установленными в системе.

Идентичные драйвера

Думаю, тут особо не о чем рассказывать. Стоит помнить, что драйвера необходимо брать с официальных страниц изготовителя принтера. Так же еще один момент — стабильнее всего ведут себя PCL5. Если есть возможность выбора между PCL5 и PCL6 — стоит установить PCL5 (соответственно, серверу и клиенту).

Изоляция драйверов

В Windows 2008 появилась замечательная возможность изоляции драйверов принтера. Теперь драйвер принтера подгружается не Spoolsv.exe а специальным процессом PrintIsolationHost.exe. При «вылетании» драйвера принтера «слетает» только один экземпляр PrintIsolationHost.exe, а сама служба «Диспетчера печати» остается работоспособной, что, как понимаете, весьма влияет на настроение пользователей ;)

Чтобы включить данную возможность, нам необходимо открыть редактор локальной групповой политики (gpedit.msc) и пройти следующим путем: «Параметры компьютера -> Административные шаблоны -> Принтеры». Находим и включаем следующие пункты:

  • Выполнить драйверы принтеров в изолированных процессах
  • Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати

Будет выглядеть следующим образом:

image

TS Easy Print

Видимо, вняв наконец стенаниям системных администраторов, компания Microsoft решила что-то сделать с необходимостью ставить зоопарк драйверов на терминальный сервер и падающим из-за этого spoolsv.exe. В итоге, на свет родилась технология TS Easy Print. Ключевой особенностью является, то, что больше нам не нужно устанавливать на сервер драйвера для каждого принтера — вместо этого используется унифицированный драйвер Remote Desktop Easy Print, соответственно, мы уходим от проблемы падающего спулера — ведь все операции с печатью выполняются на компьютере клиента.
Для того, чтобы явно определить, что мы хотим использовать на терминальном сервере TS Easy Print, необходимо пройти опять же в редактор локальной групповой политики (gpedit.msc) по следующему пути: «Параметры компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров». Нас интересуют следующие пункты, которые надо включить:

  • Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола
  • Перенаправлять только используемый по умолчанию принтер клиента

Второй пункт необходим, если мы хотим, чтобы в терминале у клиента был только его принтер по умолчанию.

image

Далее, необходимо очистить наш сервер от лишних драйверов принтеров. Это можно сделать в менеджере роли «Службы печати и документов».
Внимательно удаляйте драйвера! Необходимо оставить в живых такие вещи, как «Remote Desktop Easy Print» и «Microsoft XPS Document Writer». Именно они и отвечают за передачу печати на клиента.

Теперь перейдем к требованием на клиенте. Их всего два — использование протокола RDP версии не ниже 6.1 и .NET Framework 3.0 с пакетом обновления 1 (SP1). Больше от них ничего не требуется.

Решения сторонних компаний

Избавиться от проблемы падающего спулера призваны такое ПО как, например, ScrewDrivers (сайт). Оно предоставляет клиент-серверную архитектуру.
Сервер ScrewDrivers — это компонент, который необходимо установить на серверы, на которых планируется использовать печать в терминальном сеансе. Клиент ScrewDrivers должен быть установлен на рабочих станциях. Именно этот компонент позволяет создать на терминальном сервере виртуальные принтеры, которые соответствуют локальным принтерам пользователя.
В целом, напоминает Easy Print, но не бесплатно (впрочем, есть лекарства ;).

Заключение

На этом хочу откланяться. Возможно информация не полная — буду рад услышать дополнения. Надеюсь, это поможет кому-то избежать часов нервотрепки ;)
Удачи!

На чтение 13 мин Просмотров 2.9к.

Содержание

  1. Шаг 1
  2. Виртуальный сервер на базе Windows
  3. Шаг 2
  4. Настройка
  5. Особенности практического использования
  6. Заключение

Доброго всем дня (или чего там у вас сейчас).

Вы наверное думаете, что сейчас пойдет речь о сервере терминалов, удаленном доступе, печати через хитрожопую непростую последовательность компьютер->сервер->компьютер->принтер HP? Вы чертовски правы! Представляю вам небольшой рассказ: как я победил сообщение «Параметр задан неверно» при печати на HP LaserJet из сеанса удаленного доступа.

Стоит у нас Сервер терминалов. Вернее, теперь это модно называть «сервер удаленных рабочих столов«. ОС – Microsoft Windows Server 2008 R2 Standart. На сервере установлена 1С-Предприятие с которым, собственно, клиенты сервера и работают. Так повелось, что принтеры у клиентов разные, но все одного производителя – Hewlett Packard.

Первым, если склероз мне не изменяет, начал бунтовать HP LaserJet P1566. Подключенный к компьютеру с Windows 7 Pro, он работал без нареканий. Но при попытке распечатать что-либо из 1С (из сеанса удаленного рабочего стола) молчал как партизан. Ну типа, нажал «Печать» – и ничего. Ни распечатанного документа, ни ошибки. Just silence. Ни на какие уловки и провокации не поддавался. Установка и переустановка драйверов разных версий не помогала, даже всемогущие и всезнающие поисковики выдавали всякий фарш из информации, дабы не признаваться что тут они бессильны. Удалось лишь выяснить, что если попытаться из удаленного сеанса распечатать текстовый документ из блокнота, получается ошибка «Параметр задан неверно». Это была первая зацепка. Хотя ни «мастер исправления неполадок», будь он неладен, ни поиски по подробностям полученной ошибки ни к чему не привели.

Вобщем, поставил вместо этого партизана другую модель (HP LaserJet 1022), которая заработала как положено (была тогда такая возможность).

Долго ли, коротко ли, да только начал и другой принтер страдать таким же безобразием. Я уже начал подумывать, что это заговор машин против человечества. Но как-то очередной раз, разбираясь как там происходит печать на сервере удаленных рабочих столов, набрел на описание новомодной фичи от майкрософт – TS Easy Print. Оказывается печатать родными драйверами принтера с сервера нынче моветон и Майкрософт решила осчастливить системных администраторов новой технологией. Если интересуетесь подробностями, в конце статьи есть ссылки.

Как можно догадаться, далее я отключил использование по умолчанию Easy Print и – о чудо, все заработало!

После чего я вспомнил о страждущих, попавшихся мне на просторах рунета, страдающих от этой же проблемы. Наиболее подходящим местом для описания решения мне показался форум Microsof TechNet (этого блога тогда еще не было). Теперь вот решил этот случай зафиксировать для истории и здесь, хотя, вполне возможно, что, с обновлениями Server 2008 R2, эта проблема уже решена, у меня пока нет желания проверять. В поисковиках подобного описания я не нашел, посему дублирую свой пост из TechNet:

На сервере терминалов:

Пуск -> Выполнить -> gpedit.msc -> Конфигурация компьютераАдминистративные шаблоныКомпоненты WindowsСлужбы терминаловСервер терминаловПеренаправление принтеров -> использовать в первую очередь драйвер принтера Easy Print служб терминалов. Отключай нафик!

Теперь перезапусти сеанс клиента, у которого проблема с LaserJet 1120. И в его сеансе: Пуск, Устройства и принтеры, HP LaserJet M1120 (перенаправлено бла. бла. ), правая кнопка мыши, Свойства принтера, вкладка Дополнительно.

В графе «Драйвер» не должен быть Easy Print Driver. Если эта гадина ещё там, значит на сервер надо установить подходящую версию драйвера для твоего принтера.

Новая волшебная технология Microsoft Easy Print Driver предназначалась освободить администраторов от установки драйверов принтеров на сервер терминалов. И у многих, дай бог ей здоровья, работает. Но, по крайней мере, с некоторыми моделями HP выдает труднодиагностируемую ошибку. (У меня не работает с HP LaserJet Pro 1566, HP LaserJet Pro M1212nf и HP LaserJet P1606dn). Кроме того, говорят, EPD способна превратить три страницы документа в 15мб трафика.

По-умолчанию, сервер терминалов пытается использовать Easy Print Driver, и если не получается (например, клиент не поддерживает), подбирает родной драйвер принтера. После отключения «Использовать в первую очередь драйвер принтера Easy Print», сервер наоборот, в первую очередь найти подходящий принтеру драйвер, а потом использует Easy Print.

(там, кстати, в коментах девушка описала такую же ситуацию как у нас с тобой)

Может пригодиться при установке родного/подходящего драйвера:

Шаг 1

Проверить, что в настройках RDP-файла настроен проброс локальных ресурсов до сервера.

Для этого необходимо кликнуть по RDP-ярлыку правой кнопкой мыши и выбрать строку Изменить. Откроется окно с параметрами, Вам нужно перейти на закладку Локальные ресурсы и поставить галочку Принтеры.

Если Ваш принтер поддерживает функцию EasyPrint, тогда необходимо лишь убедиться, что на хост добавлена роль сервера удаленных рабочих столов, так как при ее добавлении устанавливается непосредственно драйвер EasyPrint. На этом настройка закончена и можно приступать к печати документов.

Виртуальный сервер на базе Windows

Если Ваш принтер не поддерживает функцию Easy Print, тогда Вам необходимо установить драйвер на сервер для Вашей модели принтера. Как это сделать читайте далее.

Шаг 2

Далее -> Роли сервера -> Службы печати (поставить галочку напротив) -> Далее -> Далее (по умолчанию выбран параметр «Сервер печати») -> Установить -> Перезагрузить сервер

В диспетчере сервера – конфигурация – локальные пользователи – группы – print operators добавляем свою учетную запись (администратор)

  • Делаем log off – log on
  • Скачиваем драйвер с официального сайта производителя принтера
  • Распаковываем архиватором
  • В диспетчере сервера. Серверы печати – название вашего компьютера с которого подключаетесь – принтеры
  • Убеждаемся, что напротив нашего принтера стоит remote desktop easy print
  • Идем: Серверы печати – название вашего компьютера с которого подключаетесь – драйверы ПКМ добавить драйвер

    Установить с диска – указываем файл *.inf , прогоняем мастер установки.

  • Выполняете log off/ log on на терминальном сервере.
  • В качестве альтернативы использования традиционной системы печати в Windows 2008 появилась технология TS Easy Print, позволяющая избежать установки драйверов для перенаправленных принтеров на терминальном сервере. Благодаря этому значительно повышается стабильность работы как службы диспетчера очереди печати, так и всего терминального сервера в целом.

    Внедрение TS Easy Print не требуется дополнительной установки серверной и клиентской части. Достаточно лишь наличие на рабочей станции клиента удаленного рабочего стола версии 6.1 (или старше) и .NET Framework 3.0 SP1 (или старше).

    Статья разделена на два основных раздела.

    Первая часть посвящена способам настройки и управления технологией TS Easy Print при помощи групповых политик и консоли управления печатью.

    Во втором разделе собран практический опыт автора по использованию TS Easy Print, а также приведен ряд примеров из форумов Microsoft Technet.

    Настройка

    Для управления настройками печати на терминальном сервере в Windows Server 2008 существует несколько групповых политик. Найти их можно в следующем контейнере:

    Computer ConfigurationAdministrative TemplatesWindows ComponentsTerminal ServicesTerminal ServerPrinter Redirection.

    В русскоязычном интерфейсе это

    Конфигурация компьютераАдминистративные шаблоныКомпоненты WindowsСлужбы терминаловСервер терминаловПеренаправление принтеров (рис. 1).

    Рис. 1. Групповые политики для управления перенаправленным принтерами

    Рассмотрим каждую из них более подробно.

    Таблица 1: Политики управления печатью на терминальных серверах

    Групповая политика (в скобках представлен

    русский вариант названия)

    Описание функциональности

    Do not set default client printer to be default printer in a session

    (Не устанавливать используемый по умолчанию

    принтер клиента в качестве принтера для сеанса)

    Определяет будет ли принтер по умолчанию на клиенте автоматически установлен как принтер по умолчанию в терминальной сессии. Если этот параметр не задан, пользователь может самостоятельно задать принтер по умолчанию в терминальной сессии.

    Do not allow client printer redirection

    (Не разрешать перенаправление клиентских принтеров)

    Позволяет запретить подключение клиентских принтеров к терминальной сессии. Включение этой политики отключает перенаправление принтеров.

    Specify terminal server fallback printer driver behavior

    (Задать поведение сервера терминалов при

    выборе резервного драйвера принтера)

    Не смотря на существование этой политики использовать её можно только на Windows Server 2003.

    Use Terminal Services Easy Print driver first

    (использовать в первую очередь драйвер принтера

    Easy Print служб терминалов)

    Если эта политика включена или не настроена, сервер терминалов сначала попытается использовать драйвер принтера TS Easy Print для установки всех клиентских принтеров. Если по какой-либо причине драйвер TS Easy Print не доступен, используется драйвер принтера на терминальном сервере, соответствующий принтеру на клиентском компьютере. Если драйвер не найден на терминальном сервере, этот принтер не может быть перенаправлен.

    Redirect only the default client printer (Перенаправлять

    только используемы по умолчанию принтер клиента)

    Включает перенаправление только принтера по умолчанию. Остальные принтеры не перенаправляются.

    Use Terminal Services Easy Print Driver First

    Redirect Only The Default Client Printer

    также можно найти в пользовательском разделе групповых политик в контейнере

    User ConfigurationPoliciesAdministrative TemplatesWindows ComponentsTerminal ServicesTerminal ServerPrinter Redirection.

    Отдельно следует упомянуть о способах управления принтерами системными администраторами. По сравнению с Windows Server 2003, изменился механизм отображения доступных принтеров. Во время работы процесса Winlogon, диспетчер очереди печати перечисляет только принтеры, которые доступны пользователю в рамках его текущей сессии (вместо перечисления всех перенаправленных принтеров).

    Однако, даже не смотря на то, что системный администратор не может видеть принтеры других пользователей, есть обходной маневр для получения информации о перенаправленных принтерах и выполнения с ними ряда административных задач. Члены группы «Print Operators» («Операторы печати») могут увидеть все перенаправленные принтеры в консоли управления печатью «Print Management Console» и панели управления принтерами. Для этого необходимо выполнить следующие действия.

    1. Добавить себя в группу «Print Operators».

    2. Установить роль «Print Services» на сервер.

    3. Запустить консоль «Print Management».

    По умолчанию администраторы и операторы печати не имеют прав на управление перенаправленными принтерами и могут только видеть их в консоли. Для управления перенаправленными принтерами необходимо предварительно захватить права владельца на него. Это делается следующим образом.

    1. Открыть консоль управления печатью и щелкнуть правой клавишей мыши по выбранному принтеру.

    2. Выбрать «Properties».

    3. Перейти на закладку «Security».

    4. Нажать «Advanced».

    5. Перейти на закладку «Owner» (рис. 2).

    Рис. 2. Захват прав владельца

    6. Выбрать «Print Operators» и дважды нажать «Ок».

    7. Закрыть все окна управления принтером.

    8. Заново открыть окно свойств принтера.

    9. Перейти на закладку «Security»

    10. Добавить группе «Print Operators» право «Manage Printer».

    Рис. 3. Добавление прав управления

    Члены группы Print Operators должны использовать право Manage Printers только для выполнения следующих задач:

    · удаление перенаправленного принтера;

    · открытие очереди печати перенаправленных принтеров;

    · управление заданиями на печать для перенаправленных принтеров.

    Остальные действия, такие как переименование, установка для принтера свойств по умолчанию и предпочтений печати не поддерживаются.

    В моей практике это понадобилось для решения проблемы с уходом в отключенное состояние после рестарта службы диспетчера очереди печати.

    Особенности практического использования

    В этой части я хотел бы рассказать о проблемах которые могут возникнуть в процессе использования технологии TS Easy Print и способах их решения. Информация представлена в виде описания проблемы и возможного способа её решения. По возможности, проблема проиллюстрирована примерами из форумов Microsoft Technet.

    Проблема 1. Нестабильность службы диспетчера очереди печати

    Основной предпосылкой внедрения TS Easy Print являются сбои в службе диспетчера очереди печати при использовании драйверов для принтеров на терминальном сервере. Эта проблема также актуальна и в «смешанной» среде. Если на терминальном сервере параллельно используются как TS Easy Print, так и традиционная система печати, проблемы могут только усугубиться. Это связано с тем, что при перезапуске службы диспетчера очереди печати, перенаправленные принтеры переходят в состояние offline и становятся недоступными для печати. Для наиболее быстрого решения этой проблемы требуется переподключение терминального сеанса. Всё это вызывает массу негативных отзывов (пример на форумах Microsoft Technet) со стороны конечных пользователей.

    В качестве глобального решения этой проблемы можно рассмотреть полное удаление драйверов принтеров и сопутствующих им элементов с терминального сервера. Однако и эта операция может вызвать массу проблем (пример на форумах Microsoft Technet), так как вместе с драйверами принтеров могут удалиться драйвера Terminal Services Easy Print и Microsoft XPS Document Writer. Без них перенаправление принтеров по технологии TS Easy Print работать не будет.

    В связи с этим, необходимо крайне осторожно относиться к удалению драйверов на терминальном сервере при помощи специальных утилит:

    Перед их использованием настоятельно сделать резервное копирование системы.

    Альтернативным способом является ручное удаление драйверов. Это делается следующим образом.

    1. Перейти в «Панель Управления».

    2. Выбрать «Принтеры»

    3. Щелкнуть «Свойства Сервера» (рис. 4)

    Рис. 4. Свойства сервера печати

    4. Перейти на закладку «Драйверы» (рис .5)

    Рис. 5. Драйверы принтеров

    5. Поочередно удалить все драйверы кроме Terminal Services Easy Print и Microsoft XPS Document Writer.

    Кроме того, можно дополнительно удалить данные из реестра и файловой системы. Более подробную информацию об этом можно получить в статье Print Spooler Crash Troubleshooting Steps.

    Если терминальные сервера находятся терминальной ферме, и для соединения с ними используется ключ /admin, то при проверке нужно учитывать, что при таком типе подключения TS Easy Print не работает по умолчанию (KB947723).

    Проблема 2. Печать «иероглифов» на перенаправленных принтерах»

    При печати по технологии TS Easy Print могут отображаться «иероглифы». Обычно это вызывается старой версией .Net Framework. Установка более новой версии данного программного продукта может решить данную проблему. Данная проблема актуальна для старых версий клиентских операционных систем. Для Windows 7 дополнительная установка .Net Framework необязательна.

    Проблема 3. Перенаправление принтеров не работает

    Для решения данной проблемы следует проверить настройки перенаправления для клиента удаленного рабочего стола, на терминальном сервере, результирующие групповые политики и параметр реестра:

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWds
    dpwd
    fEnablePrintRDR.

    Проблема 4. Пользователи не могут печатать на перенаправленных принтерах при совмещении ролей терминального сервера и контроллера домена

    При совмещении ролей терминального сервера и контроллера домена у пользователей могут возникнуть проблемы с печатью (пример на форумах Microsoft Technet).

    Для решения нужно дать права modify для группы everyone на папку: C:WindowsSystem32spool или воспользоваться статьей KB968605.

    Проблема 5. Снижение скорости печати

    Скорость печати может существенно снизиться после применения обновления KB954744, решающего проблему с некорректной ориентацией страниц при печати на перенаправленых принтерах. Для решения этого надо установить дополнительное обновление KB954773.

    Проблема 6. Не все принтеры перенаправляются в терминальную сессию

    По умолчанию число перенаправляемых принтеров ограничено 20. Это поведение можно исправить добавив в раздел реестра

    HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services

    ключ MaxPrintersPerSession и задав в нем максимальное число перенаправляемых принтеров.

    Проблема 7. Поддержка тонких клиентов

    Одним из основных минусов технологии TS Easy Print являются требования к версии клиента удаленного рабочего стола и установке .Net Framework. Достаточно много тонких клиентов (особенно произведенных несколько лет назад) не имеют достаточно дискового пространства для использования операционной системы, содержащей данные программные продукты. Для остальных можно воспользоваться новой версией Windows Embedded 2009.

    Заключение

    В статье рассмотрена практическая сторона использования технологии TS Easy Print. Особое внимание уделено проблемам, которые могут возникнуть при переходе на новую систему печати. Не смотря на достаточно большое число перечисленных проблем, следует отметить, что технология TS Easy Print уже зарекомендовала себя с самой лучшей стороны и может быть использована в производственных целях. В качестве альтернативы TS Easy Print могут использоваться сторонние программные продукты (например, ThinPrint). Однако следует учитывать, что большинство таких продуктов платные и требуют установки дополнительного программного обеспечения.

    Автор статьи не я, позаимствовано у http://lpine.org/

    Перенаправление принтеров в терминалах (MS Terminal Services & Remote Desktop Services)

    Часть первая, теория

    Введение, «Что такое печать в терминальных службах»

    1. Как включить

    2. Групповые политики

    3. Схемы «родной драйвер» и «драйвер подстановки»

    4. Схема со Screwdrivers

    5. Совместимые с терминалами принтеры

    6. Печать через VPN

    Часть вторая, решение проблем

    1. Типы проблем с печатью в терминалах

    2. Проблемы со спулером

    3. Драйвер перенаправления

    4. Реестр

    5. Визард устранения проблем от Майкрософт

    6. Если больше ничего не помогает, а печатать принтер должен

    7. Печать на медленных каналах

    8. Полезные ссылки

    Что такое печать в терминальных службах

    В 90-х Майкрософт разработал специальную роль для Windows NT 4.0 Server под названием Terminal Server. Роль оказалась популярной и востребованной. Функционал у неё довольно простой: используя специальное ПО mstsc.exe («Подключение к удалённому рабочему столу»), входящее в поставку всех современных версий и редакций клиентских ОС Windows (кроме, пожалуй, Windows Phone), можно подключаться по сети к удалённому серверу и видеть рабочий стол удалённого сервера и управлять им при помощи мышки и клавиатуры как своим собственным.

    Особенно полезным оказалось то, что за одним сервером могут работать сотни пользователей через интернет, и у каждого будет на этом сервере свой собственный рабочий стол, а установленное на сервере программное обеспечение и его аппаратные ресурсы разделяются между всеми пользователями.

    В отличие от множества других методов транспортировки изображения по сети (VNC, RAdmin, DameWare, Teamviewer, AMMYY Admin и проч.), майкрософтовские терминалы не гонят отсканированную с видеокарты графику, вместо этого они заново отрисовывают все окна на стороне клиента, пользуясь Windows API и проч, передавая по сети только текстовые команды типа «отрисовать такое-то окно такого-то размера с таким-то градиентом». В результате требования по ширине канала для работы очень низкие, и очень высокая скорость работы в стандартных оконных интерфейсах Windows. Впрочем, отличную от окошек графику терминалы гонят также, как и конкуренты, поэтому в терминалах всегда начинаются тормоза при попытке смотреть/редактировать видео и графику.

    Протокол, по которому осуществляется передача данных с сервера терминалов на клиентскую рабочую станцию, называется RDP. С выходом OS Windows Server 2008 R2 терминалы переименовали в Microsoft Remote Desktop Services (службы удалённых рабочих столов). Но, как это обычно бывает в Майкрософт, переименование коснулось только поверхностного слоя, глубоко же внутри функции, ключи реестра и проч. по-прежнему называются на Terminal Services. Кстати, иногда бывает даже такое, что при троекратном переименовании продукта на самом поверхностном слое продукт имеет третье название, чуть глубже — второе, более старое, а на самом низком уровне абстрагирования — первое, ещё более старое, именно так обстоит дело с продуктом Forefront TMG, впрочем, не будем отвлекаться.

    Существует и более серьёзная версия терминалов, которой занимается компания Citrix. Это решение для крупных компаний, держащих т.н. «фермы» терминальных серверов. За это решение платятся дополнительные деньги сверх уже заплаченных за лицензии на майкрософтовские терминалы, но оно серьёзно облегчает работу, т.к. позволяет централизованно управлять всей фермой, централизованно ставить софт и его настраивать, по-умному раскидывать юзеров между членами «фермы» и т.п. Это решение переименовывалось ещё большее количество раз, начиная от Citrix WinFrame, через MetaFrame, через Citrix Presentation Server, до Citrix XenApp. Протокол для этого решения называется ICA, однако, внутри он является тем же RDP (и потому для XenApp верно многое из того, что верно для RDP и наоборот), исходные коды которого MS лицензирует Цитриксу, без чего XenApp был бы, скорее всего, невозможен и Цитриксу пришлось бы довольствоваться унылым, тормозным и требовательным к ширине канала методом транспортировки десктопа, аналогичным тем, которые используются Radmin, Teamviewer и так далее.

    Удалённый десктоп это прекрасно, но рано или поздно юзер сталкивается с тем, что из удалённых приложений ему нужно печатать на принтер. При этом редко кому и когда нужно печатать на принтер, который подключен к удалённому серверу терминалов, который от юзера находится нередко в сотнях и тысячах километров. Печатать нужно на свой, локальный принтер. Для решения этой задачи предлагались в разное время разные методы, все они были не без недостатков, порождающих различные проблемы, которые мы тут и постараемся исчерпывающе описать и предложить соответствующие им решения. Эти методы в разных контекстах называются «printer mapping», «printer redirection», « Easy Printing» а по-русски «перенаправление печати», «сопоставление принтеров» и т.д.

    Поскольку аудиторией этого текста являются русскоязычные юзеры и админы, то большинство скринов будет на русском, тем более что в подавляющем большинстве организаций в России терминальные серверы стоят русифицированные, т.к. на них работают пользователи. Среди back-end серверов доля нерусифицированных, конечно, выше чем среди терминальных серверов.

    1. Как включить печать в терминальных службах

    Очевидное (опытные админы могут пропустить), а именно, как включить перенаправление печати, если оно не включено. На стороне клиента для подключения к серверу терминалов используется программа mstsc.exe, она же «Подключение к удалённому рабочему столу».

    подключение к удаленному рабочему столу

    Нажать на «параметры», в закладке «локальные ресурсы» убедиться, что стоит галка на «Принтеры». Не требует административных прав.

    галка принтеры

    На стороне сервера нужно запустить tscc.msc (в 2008 и выше tsconfig.msc), на RDP-Tcp нажать правую клавишу мыши, выбрать «Свойства» и в закладке «параметры клиента» убедиться, что НЕ стоит галка на отключить «Сопоставление принтеров». Это действие требует наличия прав администратора на сервере терминалов.

    сопоставление принтеров

    На этом всё, после выполнения этих нехитрых требований по мнению Майкрософт Вы можете печатать из удалённого рабочего стола на свой локально установленный принтер. В этом скриншоте показан удалённый рабочий стол, на который «пробросился» локально установленный принтер Samsung:

    пробросили принтер samsung

    Не пробросился? Читаем дальше.

    2. Групповые политики

    Бывает и такое, что галка на отключить «сопоставление принтеров» на предыдущем скриншоте стоит, а убрать её нельзя, т.к. надпись серая, или, говоря в англоязычной программистской терминологии, этот «checkbox» is «greyed out»:

    групповые политики

    Такое бывает, если настройками сервера терминалов управляют групповые политики (group policies). Если сервер терминалов является членом домена Windows (он же Active Directory Domain Services), а скорее всего это так, то для управления групповыми политиками нужно быть администратором домена. Для установки соответствующих настроек администратору домена следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:

    Настройка политик GPedit.exe

    Здесь следует обратить внимание на настройку «не разрешать перенаправление клиентских принтеров», она должна быть в состоянии «не задано» или «отключено».

    3. Схемы «родной драйвер» и «драйвер подстановки»

    Если настройки по перенаправлению принтеров выполнены как указано выше, то принтер будет перенаправляться ТОЛЬКО в том случае, если на терминальном сервере ТАКЖЕ установлены драйверы на принтер того производителя и той модели, который стоит у юзера локально. В противном случае перенаправляемый принтер на сервере терминалов скорее всего создан не будет, а в журнале событий «Система» появится сообщение от провайдера TermServDevices с кодом 1501 и содержанием, указывающим на то, что на терминальном сервере не установлен соответствующий драйвер.

    Поэтому для работы перенаправления печати с сервера терминалов на локальный принтер следует ставить драйвер принтера и на локальном ПК, с которого осуществляется подключение, и на удалённом сервере, на который осуществляется подключение.

    Но, такая схема работы имеет очевидные недостатки. Например, туговато приходится администраторам серверов, к которым подключаются сотни людей у многих из которых установлены самые разные принтеры. Такой сервер терминалов рано или поздно превращается в помойку из десятков и сотен драйверов принтеров, которые могут конфликтовать друг с другом и в конце концов вообще угробить всю подсистему печати целиком (о том, как её восстанавливать см. ниже главу про cleanspl). Кроме этого не на все принтеры, особенно принтеры для диапазона SOHO, существуют драйверы для серверных операционных систем, а драйверы для десктопных систем (таких как XP/Vista/7/8) часто не встают на соответствующие им серверные ОС (такие как 2003/2008/2008R2/2012). Ну и в конце концов установка драйверов это муторный процесс, которым администратору заниматься неохота.

    Слава Гейтсу, существует и альтернативное решение, а именно, подстановочный драйвер. Дело в том, что несмотря на различия, большинство принтеров имеет много общего и, невероятно, но факт, на них можно печатать с использованием унифицированного PCL или PS драйвера. Подстановку унифицированного драйвера можно задать только с помощью групповых политик, поэтому для установки соответствующих настроек администратору следует на контроллере домена запустить gpmc.msc (если её нет, то dsa.msc) и открыть интерфейс редактирования политики, относящейся к данному терминальному серверу. Если же сервер терминалов не входит в домен и является т.н. «stand-alone» сервером, то на нём также есть локальные групповые политики, которые можно отредактировать при помощи gpedit.msc. Интерфейс в обоих случаях одинаковый, поэтому инструкции подойдут для обоих случаев:

    подстановка универсального драйвера принтера

    Если включить политику «Поведение сервера терминалов при выборе подходящего драйвера принтера» и в следующем окошке выбрать подстановку PCL и/или PS драйвера, то при подключении к серверу терминалов у юзера будет автоматически создаваться перенаправленный принтер, даже если на сервере соответствующий драйвер не установлен.

    Увы, этот метод имеет своим недостатком то, что подстановочный драйвер сработает не для всех принтеров. Для большинства принтеров он работает, но для некоторых нет. Прежде всего этот метод не подойдёт для т.н. host-based драйверов принтеров, т.к. они не являются PCL- или PS- совместимыми. Иногда заставить печатать host-based принтеры всё-таки можно, установив на сервер драйверы для этих моделей, но некоторые модели не имеют драйверов для серверных OS. В ряде случаев эта проблема решаема, см. далее главу о Tricerat Screwdrivers. Подстановочный драйвер, если посмотреть на него внимательно, является драйвером HP DeskJet 500:

    подстановочный драйвер HP DeskJet 500

    С выходом ОС Windows Server 2008 Майкрософт представил решение Easy Printing, которое позиционировалось как панацея для многочисленных проблем с печатью в терминалах. Идея заключается в создании специального перенаправленного принтера с Easy Print драйвером, который печатает в XPS (Майкрософтовский открытый формат документов, призванный заменить pdf, но успеха не снискавший), а XPS затем переправляется на сторону клиента, где благополучно печатается на локальный принтер как XPS документ. В теории такой метод печати решил бы все проблемы, но на практике то ли Майкрософт этот метод до ума не довёл, то ли на него надавили производители принтеров и/или альтернативных решений для печати в терминалах, но Easy Printing проблем с печатью так и не решил: всё осталось как и раньше: подключаешь к терминальному серверу нового клиента и надеешься на то, что его принтер удастся «подружить» с терминалами, своего рода «connect and pray». Как бы то ни было, Easy Printing включается также через групповые политики, там же, где и драйвер подстановки:

    Easy Printing

    4. Схема со Screwdrivers

    Поскольку проблем с печатью на терминалах всегда была адовая прорва (по данным некоторых ИТ аутсорсеров, проблемы с печатью это наиболее часто встречающиеся проблемы), свою нишу нашли компании, которые делали процесс печати из терминалов более удобным, а иногда и вообще его просто «делали», когда иначе печатать было просто невозможно.

    Решение Tricerat Screwdrivers платное. Оно состоит из серверной части (ставится на сервере терминалов) и клиентской части (есть msi пакеты, удобные для масс-деплоймента через ГП или SCCM). Особых настроек не требует и обычно всё прекрасно работает с настройками по-умолчанию после установки на сервере и на всех клиентах. После простой установки обычно клиент оказывается способен печатать на свои принтеры, на которые не удавалось настроить печать без screwdrivers. Поскольку этой статьи тогда ещё не было написано, а спецов по терминальным серверам не так много, то настройка терминальной печати и решение проблем с ней могло затягиваться на часы и дни. Поэтому многие приняли разумное решение по радикальному решению проблем с терминальной печатью: купить и задеплоить Screwdrivers. Кроме собственно печати Screwdrivers позволяют осуществлять тонкий тюнинг терминальной печати, например, регулировать ширину канала для печати:

    настройка Screwdrivers

    Но… не всё оказалось так просто. Дело в том, что существуют некоторые, особо жадные производители принтеров (не будем говорить кто, хотя это Hewlett-Packard), которые СПЕЦИАЛЬНО (это не факт, а моё оценочное суждение) отрезают поддержку печати в терминалах на принтерах, позиционирующихся для рынка SOHO. Это всё делается, конечно, для повышения продаж, т.к. решение HP для случаев непечати в терминалах простое: покупайте новый, более дорогой девайс. Такие модели принтеров зачастую не печатают даже со screwdrivers и в этих случаях ничего сделать невозможно, только менять принтер на совместимый с терминалами. О том, как определить совместимость принтера с терминальной печатью рассказываем в следующей главе.

    5. Совместимые с терминалами принтеры

    Как правило, все современные принтеры любых производителей ценой хотя бы от 5 т.р. совместимы с печатью в терминалах, за исключением Hewlett-Packard. Если Вы верны традициям печати этой компании и хотите приобрести принтер непременно этого производителя, то существует специальный, регулярно обновляемый документ производства Citrix & HP, который легко ищется в Сети по ключевым словам «Citrix XenApp HPPrinters supported» (ссылку намеренно не даю, т.к. постоянно выходят новые версии и меняется URL). Здесь нам поможет информация из первого абзаца, а именно, тот факт, что XenApp есть надстройка над майкрософтовскими терминалами, позволяет с определённой долей уверенности утверждать, что принтеры, поддерживаемые в среде XenApp, скорее всего также будут печатать и в среде MS Terminal Services & MS Remote Desktop Services. Автору пока неизвестно ни об одном случае отклонения от этого правила, и принтеры, поддержка которых заявлена в этом документе, оказывались печатающими и в майкрософтовских терминалах.

    Помимо HP, Citrix также поддерживает аналогичные списки и для устройств некоторых других производителей, например, для принтеров Xerox. По мнению автора, сам факт существования таких списков у Цитрикса свидетельствует о том, что производители, для устройств которых составляются такие списки, поддерживают печать в терминалах ПЛОХО. Именно поэтому Цитрикс и вынужден эти списки составлять и публиковать. Отсутствие таких списков в отношении устройств Samsung или Kyocera, по мнению автора, свидетельствует о том, что с печатью в терминалах у этих устройств всё в порядке. Автору, пожалуй, ни разу не доводилось встречать хоть сколько-нибудь серьёзных устройств (исключая понятные случаи вроде переносных персональных принтеров, всяких там древних струйников и т.п.) этих производителей, в которых терминальная печать была бы невозможна.

    список совместимых принтеров citrix

    Увы, список этот неполный и трудно понять, если, конечно, не привлекать к объяснению теории заговора, почему уже давно продающиеся модели принтеров долго не включаются в этот список. Однако, общее правило такое: если модели принтера в списке нет, то лучше не брать: существует значимая вероятность того, что принтер окажется несовместимым с печатью в терминалах.

    6. Печать через VPN

    Настроить печать на перенаправляемый принтер в терминалах так и не удалось? Есть гарантированно рабочее решение, которое будет работать с любым принтером, на который можно печатать через «службу доступа к общим папкам и принтерам», она же SMB. Для этого локальный принтер следует «расшарить» для общего доступа и установить VPN-канал между клиентским ПК и сервером. Самые простые варианты это RRAS на сервере и PPTP-клиент (встроенный в Windows) на клиентском ПК или OpenVPN. После установки канала необходимо просто подключить печать по сети на расшаренный на клиентском ПК принтер стандартными средствами, убедившись, что прохождению траффика SMB не препятствует firewall и прочее.

    Таким же способом к серверу терминалов через VPN можно подключать сетевые принтеры, через «Стандартный порт TCP/IP», для чего нужно обеспечить прохождение порта TCP 9100, используемого для печати на сетевые принтеры.

    Единственная возможная проблема с этим способом заключается в отсутствии драйверов для принтера под серверную OS, на которой развёрнуты службы терминалов. Если п. 2 и 3 также не помогают, то в этом случае точно поможет только приобретение нового принтера.

    Часть II

    1. Типы проблем с печатью в терминалах

    Все проблемы с терминальной печатью можно условно разделить на несколько типов. Типы указаны в порядке приоритета при решении проблем с печатью, с учётом трудозатратности шага и вероятности возникновения проблемы именно такого типа.

    а) Локальные проблемы с печатью. Для их решения нужно прежде всего убедиться, печатает ли принтер локально. Может, у него бумага кончилась или ещё что. Проблемы этого типа в настоящем руководстве не рассматриваются

    б) Проблемы с отсутствием драйверов на сервере терминалов: никакие принтеры не перенаправляются, кроме тех, драйверы на которые входят в стандартную поставку Windows. Для решения проблем такого типа необходимо устанавливать драйверы на сервере и/или настраивать поведение сервера при отсутствующих драйверах (Easy Print и драйвер HP DeskJet 500), см. часть I, п. 2 и п. 3

    в) Проблемы с отсутствием печати на успешно проброшенный принтер. Метод решения такого типа проблем следующий: смотрим какой драйвер подцепился к проброшенному принтеру, Easy Print или DeskJet 500, пробуем их менять местами; если не помогает, то ставим на сервер родной драйвер (если их больше 1, то последовательно пробуем все, т.к. в случае HP бывает, что старые драйверы работают, а в новых поддержка терминалов уже отрезана) и убеждаемся, что к проброшенному принтеру подцепился именно родной драйвер; если это не помогает, то продаём клиенту и разворачиваем Tricerat Screwdrivers, предварительно протестировав возможность печати через него в Trial версии; если это не помогает то увы, только замена принтера или печать через VPN, см. часть I, п. 6

    Редко возникающие проблемы

    2. Проблемы со спулером

    Симптомы:

    Служба Spooler, она же spoolsv.exe, он же «Диспетчер очереди печати» тупо останавливается без объяснения причин. При рестарте опять останавливается через несколько секунд. Такое часто бывает из-за кривых драйверов на дешёвые принтеры и часто случается на терминальных серверах, на которых используется схема без драйверов подстановки, т.е. устанавливаются драйверы на все модели принтеров, установленных у клиентов. Также могут быть и другие варианты, типа ни один принтер не пробрасывается, хотя драйверы стоят и т.п.

    Что делать:

    Поскольку указателя на то, из-за чего именно вылетает spooler в таких случаях обычно не бывает, то проще и быстрее всего полностью зачистить всю подсистему печати сервера и заново выполнить настройки печати и поставить драйверы. Для этого пригодится утилита cleanspl.exe из Resource Kit for Windows Server 2003. Запускаем, соглашаемся, утилита полностью выпиливает и зачищает всю подсистему печати сервера. В 2008 и выше не поддерживается, для этой ОС Майкрософт предлагает такое решение: http://support.microsoft.com/kb/2000007

    После действия cleanspl.exe мониторы печати нужно восстанавливать вручную с новой аналогичной операционной системы:

    Типовой файл реестра прилагается к этому документу. Достоверно известно, что для работы перенаправления печати в терминал требуется USB Monitor, см. ч. II, п. 4.

    3. Драйвер перенаправления

    Симптомы:

    Не создаются перенаправляемые принтеры и в «диспетчере устройств» в «системных устройствах» отсутствует специальное устройство «перенаправитель устройства сервера терминалов», он же «remote desktop device redirector bus», в 2003 выглядит так:

    перенаправитель устройства сервера терминалов

    В 2008 R2 выглядит так:

    перенаправитель устройства сервера терминалов server 2008

    Что делать:

    Переставлять драйвер редиректора, inf-файл поставляется вместе с системой, для установки можно воспользоваться утилитой devcon.exe (http://support.microsoft.com/kb/311272):

    devcon -r install %windir%infmachine.inf rootrdpdr

    Проверять через появление соотв. устройства в списке системных устройств девайс менеджера.

    4. Реестр

    Симптомы:

    Не перенаправляются никакие принтеры. Из-за неверно выставленных прав на реестр или по иным причинам не выставлена правильно или отсутствует запись реестра.

    Что делать:

    В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwd создать запись типа DWORD fEnablePrintRDR и установить её в 1.

    В ключе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPrintMonitorsUSB Monitor создать запись типа «строковой параметр» Driver и установить её значение в usbmon.dll (сам файл правильной версии должен присутствовать в %windir%system32)

    5. Визард устранения проблем от Майкрософт

    Мне ни разу не помог, но на всякий случай Terminal Server Printer Redirection Wizard Tool

    http://www.microsoft.com/en-us/download/details.aspx?id=5640

    6. Если больше ничего не помогает, а печатать принтер должен

    Стандартные проблемы: переставить последний сервис-пак и накатить обновления, выполнить sfc /scannow, убедиться что принтер таки может печатать на другом таком же терминальном сервере с такой же OS и т.п.

    7. Печать на медленных каналах

    Особенно касается всяких допотопных DSL модемов, 3G-модемов и т.п. Т.к. для работы терминала не требуется широкополосного доступа, то у пользователя может возникнуть ощущение, что с его интернетом всё ОК, до тех пор, пока он не начнёт печатать. Задание на печать может занимать несколько мегабайт и на медленном канале печататься спустя десятки минут после отправки на печать. Если такое поведение для клиента неприемлемо, можно попробовать Screwdrivers, который позволяет сжимать траффик печати, либо убедить его приобрести нормальный интернет.

    8. Полезные ссылки

    Группа проблем печати в терминалах: http://ts.veranoest.net/ts_printing.asp

    Ключи реестра сервера терминалов: http://etutorials.org/Microsoft+Products/microsoft+windows+server+2003+terminal+services/Chapter+6+Registry/Registry+Keys+for+Terminal+Services/

    Если не получилось — заказывайте мастера на выезд http://remont-kompjuterov-perm.ru/

    Понравилась статья? Поделить с друзьями:
  • Ошибка при печати в офисе
  • Ошибка при печати в налогоплательщике
  • Ошибка при печати в ворд 2010
  • Ошибка при печати актив директори
  • Ошибка при печати zebra 2824