Remoteapp не печатает принтер
Стоит у нас Сервер терминалов. Вернее, теперь это модно называть "сервер удаленных рабочих столов". ОС - 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.
(там, кстати, в коментах девушка описала такую же ситуацию как у нас с тобой)
После завершения установки всех требуемых компонентов перезагружаем компьютер и переходим к следующему этапу.
Настройка клиента RDP (для версий Windows XP и выше)
1. Необходимо проверить, что в настройках RDP-подключения настроен проброс локальных ресурсов до сервера.
Для этого необходимо зайти в свойства RDP-подключения, перейти на вкладку "Локальные ресурсы" и поставить галочку на "Принтеры".
2. Заходим в «Панель управления - > Устройства и принтеры», выбираем нужный принтер и делаем его «По умолчанию».
Если Ваш принтер поддерживает технологию «EasyPrint», тогда настройка завершена и можно приступать к печати документов с удаленного рабочего стола.
Если Ваш аппарат не поддерживает технологию «EasyPrint», тогда приступайте к следующему пункту.
Настройка службы печати Windows Server 2008/2012
1. Необходимо добавить на сервере роль «Службы печати документов». Переходим в «Пуск -> Диспетчер сервера - > Роли - > Добавить роли - > Служба печати (ставим галочку) -> Далее - > Установить».
По завершению установки необходимо перезагрузить сервер.
2. Далее заходим в «Диспетчер сервера - > Конфигурация - > Локальные пользователи и группы - > Группы - > Операторы печати (print operators)» и добавляем учетные записи пользователей, которым необходим доступ к удаленной печати.
3. Завершаем сеанс через «Пуск -> Завершение сеанса», либо через командную строку командной logoff.
4. Скачиваем драйвера с сайта производителя принтера/МФУ и распаковываем его любым архиватором.
5. Снова открываем «Диспетчер сервера - > Сервер печати - > Ваш ПК (с которого подключаетесь)», далее добавляем драйвер на сервер.
Настройка сервера завершена.
3. Как показано на риснуке, нам необходимо выставить следующие значения:
- Перенаправлять только используемый по умолчанию принтер клиента — вкл.
- Использовать в первую очередь драйвер принтера Easy Print — отк.
4. Далее выполняем настройку изоляции драйверов печати.
Для этого перейдем в раздел редактора групповых политик: «Конфигурация компьютера\Административные шаблоны\Принтеры».
5. Правим следующие значения:
- Выполнять драйвера принтеров в изолированном виде — вкл.
- Переопределить параметр совместимости выполнения драйвера печати , сообщенный драйверов печати — вкл.
6. Для корректной работы технологии TS Easy Print необходимо, чтобы на сервера был установлен принтер Microsoft XPS Document Writer.
Настройка TS Easy Print завершена.
Дополнительно (из личного опыта)
1. В редких случаях, для корректной печати через RDP требуется добавить ip-адрес удаленного сервера и порт 3389 в исключения брандмауэра (если он включен), антивируса и прочих сторонних файрволлов установленных в системе на клиентских ПК. Тоже самое для сетевых принтеров – добавляем ip-адрес в исключения на локальном компьютере.
2. Для принтеров HP, в случаях, если родного драйвера нет под Windows Server, а драйверы от других редакций Windows не подходят, можно скачать универсальный драйвер печати HP
3. Для стабильной печати с удаленного рабочего стола, помимо Windows XP, следует обновить RDP-клиент до последней версии, предварительно отключив антивирус.
4. Удаленная печать может не работать с некоторыми моделями принтеров Xerox и Samsung, после залития на них кастомных прошивок (которые служат для обхода наличия чипа картриджей).
5. Для стабильной работы как на сервере, так и на локальном ПК, следует выставить службу «Диспетчера печати» в автоматический запуск и перезапуск в случае сбоев во всех трех случаях, интервал перезапуска на – 0 мин. (в свойствах службы).
6. Если серверая ОС имеет битность х64, то для 32-битных систем на клиентских ПК, в свойствах принтера, на вкладке «Доступ - >Дополнительные драйверы», нужно доустановить драйверы под х64.
Пункты 1, 3, 5 и 6 при настройке печати через RDP я делаю обязательно, чего и Вам рекомендую, дабы избежать проблем в дальнейшем.
Альтернативный метод печати с удаленного компьютера (для сетевых принтеров)
Данный способ подойдет для объединенных в пул принтеров, либо в случаях, если установлена «КастомСборка», заменить которую на оригинальный дистрибутив по-разным причинам не представляется возможным.
1. Первым делом, нам потребуется статический ip-адрес от провайдера по месту нахождения клиентского ПК и принтера.
Думаю, для тех, у кого нет возможности переустановить старую версию ОС на новую (например, из-за устаревшего спецсофта, дистрибутивы которых утеряны), вопрос с приобретением статического IP не будет проблемой.
2. На сетевом принтере также должен быть статический ip, т.е. не выданный по DHCP.
3. Далее в настройках маршрутизатора со стороны клиента, в разделе NAT для входящих (и, если потребуется, для исходящих) подключений, нужно пробросить порт до принтера.
Например, локальный ip-адрес принтера 192.168.0.10, номер порта можно указать любой свободный, например - 9100.
Т.е. запись NAT будет иметь примерно такой вид IP: 192.168.0.10 Port: 9100
4. Далее, идем на сервер, добавляем принтер, в процессе инсталляции (или после) создаем сетевой порт, указываем статический ip-адрес, который выдал провайдер, например, 12.34.56.78.
5. Далее в свойствах созданного сетевого порта указываем номер проброшенного в маршрутизаторе клиента порт до принтера – 9100.
6. При подключении пользователя по RDP в его сессии остается только выбрать проброшенный нами принтер по умолчанию.
7. В некоторых случаях может потребоваться настройка NAT для исходящих подключений со стороны роутера, по месту нахождения сервера.
Также, альтернативный метод печати с удаенного ПК описан в топике Альтернативное решение для печати на принтеры по сети
Вопросы, дополнения, замечания и пожелания по данной теме просьба выкладывать здесь
В этой статье данная статья позволяет решить проблему, при которой перенаправление принтера не работает и не происходит никаких ИД событий.
Применяется к: Windows Server 2012 R2
Исходный номер КБ: 2003646
Симптомы
Перенаправление принтера не работает. Перенаправление диска работает. Никакие ID-события не видны.
Причина
Дескриптор безопасности spooler должен содержать ACL ACL (Список управления доступом), который позволяет любому пользователю с проверкой подлинности открывать службу spooler для операций чтения.
В этом случае ACL отсутствовал в дескрипторе безопасности spooler.
Решение
Запустите следующую команду, чтобы показать текущие дескрипторы безопасности в шпалере печати:
Unaltered SD (дескриптор безопасности) для шпалер печати должен выглядеть так:
D:(A;; CCLCSWLOCRRC;;; AU)(A;; CCDCLCSWRPWPDDLOCRSDRCWDWO;;; BA)(A;; CCLCSWRPWPDTLOCRRC;;; SY)
Важным ACL в этом случае является ACL для пользователя, который прошел проверку подлинности( AU), так как TS выполняется в качестве сетевой службы, для успешного открытия службы spooler она полагается на этот ACL. Добавление следующего обратного ACL исправит проблему.
Чтобы добавить отсутствующий ACL, можно реализовать следующий метод.
Выполните следующую команду:
Вы увидите все acLs, за исключением "(A;; CCLCSWLOCRRC;;; AU)" ACL при открываемом текстовом файле.
Ниже приводится пример: (вы можете видеть другой выход в зависимости от разрешений, установленных на шпалере)
D:(A;; CCLCSWLOCRRC;;; AU)(A;; CCDCLCSWRPWPDDLOCRSDRCWDWO;;; BA)(A;; CCLCSWRPWPDTLOCRRC;;; SY)
Затем можно скопировать вышеуказанное в блокноте следующим образом:
sc sdset spooler D: (A;; CCLCSWLOCRRC;;; AU)(A;; CCLCSWLOCRRC;;; AU)(A;; CCDCLCSWRPWPDDLOCRSDRCWDWO;;; BA)(A;; CCLCSWRPWPDTLOCRRC;;; SY)
Убедитесь, что вы примыкаете к "sc sdset spooler D: (A;; CCLCSWLOCRRC;;; AU)" раздела выше команды к выходу, который вы видите в вашем случае.
Скопируйте и вклеите эту команду в командную подсказку. (Убедитесь, что "(A;; CCLCSWLOCRRC;;; AU)" появляется в начале. Я не знаю, почему это так, как кажется, работает.)
При запуске вышеуказанной команды сохраняются старые ACL, а также добавляется отсутствующий ACL, который является для пользователя с проверкой подлинности (AU).
Дополнительная информация
Ниже приводится список других вещей, которые можно найти в проблеме "Перенаправление принтера не работает":
Компьютерщик, лингвист, гитарист и поэт из Челябинска. Надёжный, умный и красивый.
Отключение и включение перенаправления принтеров в RemoteApp
При создании подключения RemoteApp в параметрах можно указать перенаправлять принтер при подключении или нет, но этот параметр указывается для всех сразу. Мы же сделаем персональное подключения с перенаправленным принтером и без. Конечно же если в настройках сервера отключить перенаправление, то оно не будет работать в любом случае. Так что это параметр оставляем включенным. Все очень просто. Берем созданный на сервере файл RemoteApp с расширением rdp, и открываем его с помощью Блокнота и вставляем туда параметр
redirectprinters:i:0
или исправляем существующий: 0 - выключить, 1- включить.
Сохраняем файл нажав клавиши ctrl+s и закрываем.
Теперь принтер в приложении RemoteApp не будет перенаправляться.
Сегодня будет довольно интересное на мой взгляд дело, однако для начала решение небольшой проблемы:
Дело №5. О не печатающем принтере.
После решения проблемы с принтером HP 1120 прошло совсем немного времени, и сразу появился еще один интересный случай. В одной организации был приобретен принтер: HP LJ 1217nfw MFP. В целом впечатление от аппарата были только положительные- сетевой принтерсканерфакс с поддержкой WiFi и возможности установки драйверов пользователями прямо из веб- интерфейса принтера. Все впечатление портила только одна вещь- невозможность печати из сессии удаленного рабочего стола.
В результате нескольких часов плотной работы, мне удалось решить проблему. По совету разработчиков из Microsoft, я изменил поведение Remote Desktop Easy Print. Для этого я отключил политику Use Remote Desktop Easy Print printer driver first, которая находиться по адресу:
Computer ConfigurationAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostPrinter Redirection
А также установил на сервер драйверы для принтера(помните прямо как в Windows 2003?). После этого необходимо перезагрузить сервер!
Проблема была решена, но оставила небольшой осадок- зачем тогда EasyPrint, если для некоторых принтеров все равно надо устанавливать драйверы?
Дело №6. Укрощение RemoteApp и 1С.
У одного из моих клиентов все получилось как нельзя лучше- бухгалтеры были довольны и программа работает быстро и 1С выглядит привычно, как обычное приложение.
У второго же клиента я столкнулся с небольшой проблемой. Я как обычно добавил приложение в RemoteApp manager. Создал с его помощью файл RDP и скопировал этот файл на рабочий стол пользователя. Запустил: На первый взгляд все заработало, однако после ввода пароля приложение не запустилось, а спустя несколько секунд появилась вот такая вот ошибка: Из собственного опыта общения c 1C я знал, что источник ошибки с именем BEX это как правило DEP(Data Execution Prevention). Однако, я уже давно создал исключение для всех критичных процессов 1С в диалоговом окне с настройками DEP! Путем логических размышлений я нашел решение проблемы- необходимо было добавить 1cv7.exe файл в исключения DEP еще раз, только в качестве пути к файлу указать не локальный путь, а тот путь который указан при настройки RemoteApp пакета! Примерно вот так:
После чего я увидел желанное окно программы с выбором базы: На этом дело можно было бы считать закрытым. Однако, при каждом запуске программы сначала появлялось вот такое вот окно: Windows сообщала мне , что сомневается в надежности запускаемого файла, и предлагала еще раз подумать, прежде чем запускать его. Каких только вариантов я не перепробовал- редактировал Зоны безопасности IE, менял настройки этих зон, добавлял имя сервера в доверенные и локальные узлы, добавлял системную переменную see_mask_nozonechecks, вобщем перепробовал все что мне насоветовал google.
Время поджимало, поэтому я решил отложить решение проблемы на потом. Вечером я решил проверить работу RemoteApp на своем домашнем компьютере. Немного подправив RDP файл, я запустил приложение и увидел то же самое окно Open File- Security Warning!
Запускаем на сервере терминалов gpedit.msc. Нам нужна политика по Set time limit for logoff of RemoteApp sessions, которая находится по адресу
Computer ConfigurationAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostSession Time Limits
Читайте также: