Страница 1 из 1

Проблема с принтерами в RDP

Добавлено: 15 ноя 2011 20:50, Вт
UncleFather

Проблема:

Проблема с принтерами в сеансах RDP - больная тема. В Windows 2003 решить эту проблему можно лишь установив третьесторонний продукт, зачастую дорогой. Примером таких продуктов могут быть ScrewDrivers и SimplifyPrinting. В Windows 2008 проблема решается при помощи EasyPrint.

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

Казалось бы, есть простое решение - расшарить принтеры на клиентских компьютерах и вручную подключить их на сервере терминалов, запретив при этом перенаправление принтеров в сеансах RDP. Но этот вариант не подходит в случае, когда клиенты находятся за пределами ЛВС, то есть когда сервер теминалов не может увидеть клиентские компьютеры (например, когда RDP сервер стоит в ЛВС, а клиенты подключаются к нему из интернета, путем проброшенного порта через роутер, или когда клиенты подключаются, используя vpn соединения) .

Решение:

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

Для некоторых принтеров есть разные версии драйверов (PCL5, PCL6, PS). Поэтому, если проброшенный принтер не хочет работать с одной версией драйверов, нужно попробовать установить другую.

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

Еще немного о перенаправлении принтеров:

Как правило, администраторы запрещают установку драйверов пользователям. Поэтому, когда пользователь подключается с новым принтером (для которого на сервере терминалов еще не установлены драйвера), поведение системы будет зависеть от параметра групповой политики Конфигурация компьютера->Административные шаблоны->Компоненты Windows->Службы терминалов->Перенаправление данных клиент/сервер->поведение сервера терминалов при выборе подходящего драйвера принтера, который может принимать значения:

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

  • Включена - Подбор подходящего драйвера принтера включен и поведение по умолчанию состоит в том, что сервер терминалов будет искать подходящий драйвер принтера. Если такой драйвер не найден, принтер на клиентском компьютере не будет доступен. Можно настраивать это поведение. Имеются следующие возможности:

    • Ничего не делать, если таковой не найден - в этом случае при несоответствии драйвера сервер пытается найти подходящий драйвер, но если таковой не найден, принтер клиента не будет доступен. Это поведение используется по умолчанию.

    • По умолчанию использовать PCL, если таковой не найден - если подходящий драйвер не найден, по умолчанию используется драйвер PCL.

    • По умолчанию использовать PS, если таковой не найден - если подходящий драйвер не найден, по умолчанию используется драйвер PS.

    • Предлагать и PCL, и PS, если таковой не найден - если подходящий драйвер не найден, предлагать на выбор драйверы PS и PCL.

Примечание: если включена политика "Не разрешать перенаправление клиентских принтеров" включена, данная политика игнорируется и подбор подходящего драйвера принтера будет отключен.

Ограничение количества инсталлированных драйверов

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

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

  • Отобразить несколько драйверов на один драйвер

  • Использовать решения сторонних разработчиков (например ScrewDrivers и SimplifyPrinting)

Чтобы отобразить несколько драйверов на один драйвер нужно:

  1. Внести в реестр по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd два новых строковых (REG_SZ) параметра:

    • PrinterMappingINFName - имя файла с настройками перенаправления драйверов, расположенного в папке %systemroot%\System32

    • PrinterMappingINFSection - имя секции в вышеуказанном файле, в которой будут располагаться сопоставления драйверов принтеров

    Код: Выделить всё

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd]
    "PrinterMappingINFName"="PrnDrivers.INF"
    "PrinterMappingINFSection"="Printers"
  2. Создать файл, указанный в параметре PrinterMappingINFName в папке %systemroot%\System32 по типу:

    Код: Выделить всё

    ;PRINTSUBS.INF 
    ;This file contains Mappings for Client driver to Server driver printer connections 
    [Printers] 
    ;"Client Printer Driver Name" = "Server Printer Drive Name" 
    "hp LaserJet 1320 PCL 6" = "HP Universal Printing PCL 6"
    "hp LaserJet 1320 PS" = "HP Universal Printing PS"
    "HP LaserJet P1505n" = "HP Universal Printing PCL 6"
    "HP LaserJet P1505" = "HP Universal Printing PCL 6"
    "HP LaserJet P1500 Series PCL 5e" = "HP Universal Printing PCL 5"
    

    Здесь нужно указать собственные сопоставления драйверов

  3. Перезагрузить компьютер

  4. После перезагрузки создастся файл %systemroot%\System32\PrnDrivers.PNF

В дальнейшем, при изменении файла %systemroot%\System32\PrnDrivers.INF (то есть при добавлении или удалении сопоставлений) достаточно просто перезапускать службу печати, не перезагружая сервер.

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