Проблема печати принтеров HP в удаленном сеансе
Всем столкнувшимся с проблемой печати принтеров HP в уделенном сеансе(WebApp)(для LJM1130_M1210_MFP)
может даже и не только HP):
Есть 2 варианта развития событий:
1. Колдуем с отключением принудительной печати EasyPrint на серваке
2. Установка последнего драйвера XPS.
Итак, второй путь, ибо ковырять сервак не очень хорошо:
1. Установить последнюю прошивку принтера и драйверы с офф сайта hp.com для вашей модели. ВНИМАНИЕ! ставить строго в соответствии с инструкцией(принтер подключается в процессе установки, а не заранее!). Перегружаемся и пробуем печатать из RDP(WebApp) – печатает – вам повезло конец; не печатает – переходим к шагу 2.
2. Идем на сайт HP и качаем драйвер XPS для вашей системы(если для вашей нет, смотрим версии постарше, в идеале соблюдая разрядность) в моем случае для клиента на Win 8.1 x64 драйвер подходит от Win 7 x 64 ВНИМАНИЕ! ставить строго в соответствии с инструкцией:
Пользователи должны установить принтер с помощью программы SmartInstall и далее выполнять следующие инструкции:
1)Извлеките ZIP-файлы XPS в папку.
2)Добавьте новый принтер. Для этого щелкните правой кнопкой мыши папку “Принтер” на панели управления и выберите в меню “Добавить новый принтер”.
3)Выберите “Добавить локальный принтер”.
4)Используйте существующий порт, к которому подключен установленный принтер HP LaserJet Professional серий M1130/M1210 MFP.
5)В диалоговом окне “Установка драйвера принтера” нажмите кнопку “Есть диск”.
6)Воспользуйтесь кнопкой “Найти папку XPS” или введите путь к папке XPS, затем нажмите кнопку Ок.
7)Из списка моделей принтера выберите нужную модель и нажмите кнопку “Далее”.
8)Сохраните или измените название принтера и нажмите кнопку “Далее”.
9)При необходимости разрешите общий доступ к принтеру.
10)При необходимости напечатайте пробную страницу и нажмите кнопку “Готово”. Теперь XPS-принтер HP LaserJet Professional серий M1130/M1210 MFP установлен.
Перегружаемся и пробуем. Все должно работать!
И тем не менее – первый путь отметать совсем нельзя.
Ну для примера возьмем такие модели принтеров(взято с реального 2012R2 сервера):
HP LaserJet 400 M401
HP LaserJet Pro M402-M403 n-dne
HP LaserJet Pro MFP M125-M126
HP LaserJet Pro MFP M127-M128
они принципиально не будут работать на драйвере Remote Desktop Easy Print.. И кстати эти принтера не будут работать на универсальных драйверах HP(и PCL5 и PCL6). А HP LaserJet Pro M402-M403 n-dne не будет работать через терминал на родном драйвере(ВСЕ версии родного драйвера содержат типовую ошибку – для него надо использовать драйвер от HP LaserJet 400 M401).
Поэтому надо расписать и первый путь:
1. Правим политики:
Конфигурация компьютера
“Конфигурация Windows” – “Административные шаблоны” – “Компоненты Windows” – “Службы удаленных рабочих столов” – “Узел сеансов удаленных рабочих столов” – “Перенаправление принтеров”
параметр “Использовать в первую очередь драйвер принтера EasyPrint удаленного рабочего стола”
Значение “Отключено”
Конфигурация пользователя аналогично.
2. Так как возникает необходимость управлять подменой драйвера то дополнительно:
вносим в реестр ссылку на файл подмен:
1 2 3 4 5 |
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd] "PrinterMappingINFName"="PRINTSUBS.INF" "PrinterMappingINFSection"="Printers" |
Сам файл PRINTSUBS.INF при этом располагаем в “%SystemRoot%\SYSTEM32”
Его наполнение выглядит примерно так:
1 2 |
"HP LaserJet 1160"="HP Universal Printing PCL 5" "HP LaserJet 1200 Series PCL"="HP Universal Printing PCL 5" |
Где слева имя драйвера на клиентской машине(в точности!), справа -имя драйвера для подмены на сервере.
После модификации PRINTSUBS.INF, естественно надо перезапускать спуллер на серваке.
Как-то так ;)
Конечно – поэтому ни один из методов не является самодостаточным и конечным ;)
Надо владеть всеми доступными техниками кунг-фу ;) – это вам не ринг – за ошибку на серваке реально по голове прилететь может ;)
Ну и заодно – для финальной обработки надо бы добавить скриптик на перезапуск спуллера с небольшой очисткой –
кодировка CP866:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@ECHO OFF :: Удаление подвисших мониторов печати taskkill /F /FI "MODULES eq hpmsn140.dll" :: Остановка диспетчера печати NET STOP spooler :: Удаление перенаправленых принтеров из HKCC SET "REG_FOLDER=HKCC\System\CurrentControlSet\Control\Print\Printers" SET "REG_PROP=(перенаправлено" FOR /F "USEBACKQ TOKENS=* DELIMS=" %%a IN (`REG QUERY "%REG_FOLDER%" 2^>NUL ^|FIND /i "%REG_PROP%" 2^>NUL`) DO CALL :REG_ACTION1 "%%~a" :: Удаление неактивных TS-портов "%~dp0_DeleteInactivePortSilently.exe" :: Запуск диспетчера печати NET START spooler GOTO :EOF :REG_ACTION1 ECHO "%~1" REG DELETE "%~1" /F>NUL 2>&1 GOTO :EOF |
Скрипт логично повесить в планировщике с привязкой на событие: Microsoft-Windows-TerminalServices-Printers/Администратор – TerminalServices-Printers – 1107