Диспетчер очереди печати продолжает останавливаться на windows 10 [быстрое исправление]

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

Если настройки по перенаправлению принтеров выполнены как указано выше, то принтер будет перенаправляться ТОЛЬКО в том случае, если на терминальном сервере ТАКЖЕ установлены драйверы на принтер того производителя и той модели, который стоит у юзера локально. В противном случае перенаправляемый принтер на сервере терминалов скорее всего создан не будет, а в журнале событий «Система» появится сообщение от провайдера 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:

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

Переустановка драйверов

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

Решение заключается в следующем:

  • Удалить находящиеся в списке устройств принтеры (открывается через панель управления). Оставить только виртуальные.

Удалить драйвера этих принтеров. Если процедуру невозможно выполнить – перезагрузить систему.

  • Через поиск найти и запустить приложение «Управление печатью».
  • Развернуть список «Серверы печати», «Локально», «Принтеры».
  • Нажать правой кнопкой по названию принтера, выбрать команду «Удалить пакет драйвера».
  • Система соберет данные. Нажать «Удалить».
  • Появится подтверждение об успешном завершении операции. Кликнуть «ОК».

Отдельно загрузить драйвера с сайта производителя для каждой версии Windows.
Провести чистовую установку.
Убедиться в устранении неисправности.

Что такое «Системные прерывания» и как они себя проявляют

Процесс «Системные прерывания» не имеет основы в виде какой-либо программы или сервиса (исполняемого файла, который находится на жёстком диске ПК). Это стандартный виртуальный процесс, который исполняет важную роль индикатора: он показывает, что система работает со сбоями и нарушениями. Чем выше процент загрузки центрального процессора (ЦП) от «Системных прерываний», тем серьёзнее проблема. Нормальное значение для процесса — не более 5%.

Почему «Системные прерывания» Windows 10 грузят процессор

По какому принципу работает процесс? Что он конкретно выявляет? Когда любая утилита запускается на компьютере, она начинает использовать его аппаратные ресурсы: материнскую плату, жёсткий диск, оперативную память (ОЗУ), видеокарту и другое. В том случае если драйверы на эти устройства отсутствуют или устарели либо повреждён сам аппарат, ЦП даёт дополнительные ресурсы для обработки тех действий, с которыми не справляется повреждённое устройство в обычном режиме. Таким образом, он компенсирует эти недостатки в виде необновлённых драйверов и некорректно работающих аппаратных частей ПК. Об этом дополнительном расходе ресурсов и оповещает процесс «Системные прерывания».

Процесс «Системные прерывания» не должен нагружать ЦП более, чем на 5%; в ином случае необходимо решать проблему

Данный процесс нагружает ЦП также по следующим причинам:

  • несовместимость аппаратной части, подключаемых устройств ввода и вывода (мышь, клавиатура, наушники и т. д.) и самого компьютера;
  • устаревшее меню BIOS, которое отвечает за обработку действий для устройств ввода и вывода;
  • неправильно установленные программы;
  • ошибки на жёстком диске;
  • работы визуальных и звуковых эффектов;
  • неполадки в работе самого ЦП.

Как оптимизировать процесс?

  1. Люди, которые продолжают применять ОС Висту, частенько замечают такие ошибки. Подобные ошибки появляются в связи со сбоем, который вызывает выключение «Контроля за учетными записями». Из-за этого, все пользователи входят в Windows как администраторы. При этом, элементы exe так нагружают систему, что компьютер начинает виснуть. В данной ситуации лучшим решением будет прейти на Виндовс 7 или 10.
  2. Также, этот процесс может появиться при неумелой сборке Windows. Другими словами люди, которые привыкли устанавливать пиратские сборки системы, имеют шанс увидеть подобные процессы своими глазами. Выходов 2: — пользователь покупает официальную версию ОС, или устанавливает сборную систему от иного производителя. Довольно часто такие ошибки возникают не после того, как пользователь установил систему, а через определённый период времени.
  3. Но и третий вариант подобной проблемы – внедрение вирусного ПО в систему. Я уже упомянул, что этот элемент проходит приличный контроль безопасности. Но, всё же хакеры иногда используют данный файл, чтобы нанести удар по системе.

Я думаю, вы отлично поняли причину появления первых 2-х вариантов сбоя. Но, с третьим вариантом человеку нужно разбираться.

Решение: Постоянно отключается служба Диспетчер печати

Если диспетчер печати отключается через несколько секунд после запуска, следует очистить очередь печати удалить все файлы в папке \windows \system32 \spool \printers.

Если это не помогло и служба продолжает останавливаться или вылетать, нужно удалить драйвера печати (очистить папку \System32\spool\drivers) и установить новые драйвера с официального сайта производителя принтера.

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

Отключение службы печати может быть вызвано различными причинами: начиная от вирусной активности и заканчивая несовместимостью старых драйверов с новой Windows (проблема может появляться после обновления Windows 10), но наиболее частыми из них являются устаревшие драйвера или перегруженная папка spool.

Принудительная очистка очереди печати

Самым простым способом избавиться от проблемы является очистка папки %SystemRoot% \System32 \spool \PRINTERS. В этой папке хранятся документы, отправленные в очереди на печать. Переполнение папки spool приводит к сбою планировщика печати (spoolsv.exe) и вызывает вылет или остановку службы.

Проблема актуальна для корпоративных компьютеров, где на печать может отправляться множество документов одновременно. От версии Windows ошибка не зависит: проблема появляется как на серверных Windows Server 2008/2012 (и других), так и на любых сборках Windows 7 и 10 (а также 8/8.1, XP, Vista проблема есть везде).

Для принудительной очистки очереди печати нужно:

  1. Открыть папку c:\windows \System32 \spool \printers на компьютере, к которому подключен принтер по USB.
  2. Удалить все файлы в папке именно эти документы из задания на печать повесили службу.
  3. Перезапустить службу. По-умолчанию автозапуск службы должен быть выставлен на Автоматически, поэтому достаточно повторно отправить документ на печать.
  4. Если же нет, нужно зайти в «Пуск» — «Панель управления» — «Администрирование» — «Служебные компоненты» — «Локальные службы», найти в списке Диспетчер печати и перезапустить службу.
  5. Документ должен нормально распечататься.

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

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

Диспетчер печати может отключаться на любой версии Windows при попытке отправить в печать PDF-документ. Перезапуск службы диспетчера печати или очистка очереди не поможет, поскольку принтер попросту не воспринимает такой документ и не знает, как его обрабатывать.

Варианта решения проблемы два:

  1. Сохранить файл в другом формате, отличном от PDF. Заново запустить службу и отправить документ на печать все должно распечататься без проблем.
  2. Обновить драйвера. Удалить старые драйвера: остановить службу диспетчера печати, удалить все содержимое из папки \System32\spool\drivers. Установить новые драйвера: их можно взять либо на диске, идущим в комплекте с принтером, либо скачать с сайта производителя устройства (HP, Canon, Xerox).

Способы решения

Самая распространенная причина сбоя печати под кодом 000006 (ошибка 0x000006ba) – отключение ответственной службы, поэтому первым делом проверяем данную вероятность, а затем переходим к другим.

Проверяем «Диспетчер печати»

  1. Следуем пути: «Пуск» — «Панель управления» — «Система и безопасность». 
  2. Меняем тип просмотра на «Крупные значки» и переходим в пункт «Администрирование» — «Службы». 
  3. Теперь перед нами длинный список различных компонентов, среди которых нам нужно отыскать «Диспетчер печати».
  4. Напротив него должно быть написано «Работает». Если нет, дважды щелкните по наименованию службы и укажите автоматический тип запуска.
  5. Закройте окошко и в левой колонке кликните «Запустить». 
  6. Подождите, пока компонент заработает, и вернитесь к печати.

Обычно для Windows 10 этих мер достаточно, чтобы нормализовать процесс выведения данных на бумагу.

Сканирование на вирусы

Нередко помехой для печати служат вирусы. Для эффективной очистки войдите в систему в «Безопасном режиме»:

Перезагрузите компьютер и до появления заставки успейте нажать F8 или другие клавиши: F1, Del, F2, F10, Tab, Reset (их выбор зависит не от того, какая у вас Windows: 8, 10, 7 или ХР, а исключительно от типа BIOS) и подождите, пока загрузится BIOS.

Выберите «Безопасный режим» — вы получите доступ к основным функциям управления. 

Запустите антивирус (обратите внимание, что некоторые из них работают только в стандартном режиме) и проверьте все файлы.

Можно также скачать антивирусную утилиту и запустить сканирование с флешки.

Чистка очереди печати

Обычный способ

  1. Откройте «Панель управления» (в «Виндовс» 10 лучше действовать не через «Параметры», а через «Классическое приложение») и вкладку «Устройства и принтеры».
  2. Выберите подключенный принтер и кликните по его значку вспомогательной кнопкой мыши.
  3. Здесь нужно нажать «Просмотр очереди печати». 
  4. Кликните крайний раздел «Принтер» и укажите «Очистить очередь». 

Принудительная очистка

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

  1. Снова найдите принтер в списке устройств, щелкните по названию основной кнопкой мыши и вверху отыщите вкладку «Свойства сервера печати» — «Дополнительные параметры» — «Папка очереди печати». 
  2. В строке должен быть указан путь: C\windows\system32\spool\Printers. Если поле пустует, кликните «Изменить дополнительные параметры» и впишите значение.
  3. Теперь закройте «Панель управления», нажмите Win+R.
  4. В строку «Выполнить» пишем: cmd и жмем «Энтер».
  5. После открытия командной строки (окно с черным полем) задайте для выполнения: net stop spooler.
  6. Затем по очереди:
    • del %systemroot%\system32\spool\printers\*.shd /F /S /Q
    • del %systemroot%\system32\spool\printers\*.spl /F /S /Q
    • net start spooler.

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

Восстановление системы

Стоит также проверить состояние системных файлов. Для этого:

  1. Вызовите «Командную строку» (выше написано, как это делается).
  2. Задайте команду: С/Windows/System32/sfc /scannow.

Теперь ОС продиагностирует и исправит неполадки самостоятельно.

Переустановка принтера

  1. Отключите принтер от компьютера и из сети.
  2. Войдите в «Панель управления» — «Устройства и принтеры».
  3. Выделите принтер и нажмите вверху «Удалить устройство».
  4. Если у вас Windows 10, то перезапустите систему и подключите принтер к компьютеру заново.

Для «Виндовс» более ранних версий, нужно скачивать драйвера с сайта той фирмы, чье имя носит ваше оборудование, и устанавливать их:

  1. Извлеките файлы из архива и сохраните их где-нибудь под рукой, чтобы точно помнить путь.
  2. Откройте «Этот компьютер» — «Свойства системы» — «Диспетчер устройств».
  3. Найдите свой принтер, кликните правой кнопкой по его названию и выберите «Обновить драйвер» — «Поиск в компьютере» — распакованные файлы.

Перед началом печати лучше перезагрузить ОС.

Обработчик печати: что это

Обработчик печати – компонент операционной системы, по умолчанию хранящийся на жестком диске под названием winprint.dll. С функциональной точки зрения необходим в Windows в качестве оператора, запускающего службы и процессы, связанные с работой принтеров, сканеров и МФУ. Если же компонент не найден, то с запуском оборудования возникнут проблемы, которые приведут к появлению уже знакомой ошибки.

Раздел «spool» в директории ОС

Каталог spool, находящийся на локальном диске C по пути «Windows\System32\», состоит по меньшей мере из 5–6 отдельных папок, содержащих важные системные библиотеки, документы и файлы.

Например:

  • drivers хранит драйвера от оборудования, используемого при работе с ОС;
  • PRINTERS – содержит информацию об очереди печати;
  • prtprocs необходим для запуска печати; взаимодействия с некоторыми отдельными функциями Windows через файл winprint.dll;
  • servers – каталог с настройками принтеров, сканеров и МФУ, подключенных к сети;
  • tools – инструментарий, необходимый при печати.

Подключение принтера через локальный порт

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

Для добавления устройства нужно прописать доступ к сетевому принтеру:

  1. Зайти в меню «Пуск», открыть «Панель управления».
  2. Перейти во вкладку «Устройства и принтеры».
  3. Нажать по кнопке «Установка принтера» в верхнем меню.

Из появившихся вариантов меню «Выбор типа устанавливаемого принтера» нужно выбрать «Добавить локальный принтер».
В следующем окне «Выберите порт принтера» нужно поставить точку на чекбокс Создать новый порт и выбрать Тип порта — Local Port .

После нажатия кнопки «Далее» появится окошко «Введите имя порта», в которое нужно ввести путь к подключаемому устройству. Посмотреть путь к принтеру можно в проводнике — к примеру, это может быть \\user\HP Printer Model&
В следующем окне «Установка драйвера принтера» нужно выбрать производителя устройства в левом столбце «Изготовитель» (например, Canon или Xerox) и модель конкретного принтера в правом столбце «Принтеры». Нажать «Далее».

После добавления устройства и указания драйверов таким способом, принтеры часто начинают исправно работать и перестают выдавать ошибку. Если в окне «Установка драйвера принтера» не оказалось драйверов для нужного устройства — это и есть причина проблемы. Загрузить драйвер можно с официального сайта изготовителя принтера, либо установить с диска, идущего в комплекте с устройством.

Очистка или замена папки spool

При появлении ошибки «Windows не удается подключиться к принтеру. Не существует обработчик печати» следует очистить компьютер от деятельности программы-планировщика spooler. Она сохраняет и сортирует файлы, отправленные на печать, организует очередь для печати для принтеров.

В папках и документах, относящихся к программе spool, может присутствовать большое количество лишних файлов. Многие документы могут оставаться от старых принтеров и не использоваться годами. Ошибка «Не существует обработчик текста» — не единственная проблема, вызванная spool. Документы могут просто не отправляться на печать, либо бесконечно отображаться в режиме «ожидание печати».

Описанный ниже способ подразумевает удаление файлов spooler’а, переустановку драйверов и очистку реестра. Эти действия приводит к необратимому драйверов и удалению устройств из памяти компьютера, и после перезагрузки ПК их придется устанавливать заново. Если этими действиями нет желания заниматься, либо нет необходимых навыков, можно попробовать использовать промежуточное решение: скопировать папку spool с другого компьютера, где проблема при печати не возникает. Также можно скопировать драйвера, если на компьютерах установлены совместимые версии Windows.

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

Причина одна и кроется она в цифровой подписи драйверов принтеров, а точнее в отсутствии данной подписи. Если драйвера на устройства подписаны не валидным с точки зрения Microsoft сертификатом или вообще без него, то он таки драйвера не принимает, считая это потенциальной угрозой, в следствии чего ваше устройство перестает работать. Это не новая проблема, но после очередного обновления KB3170455, проверка цифровой подписи драйверов, ужесточилась.

  • Можете полностью отключить проверку цифровой подписи драйверов, как это делать я описывал, посмотрите. В Windows 10 она обязательная и ужесточенная.
  • Можете удалить обновление KB3170455, но думаю это не лучший вариант, когда есть в разы проще.
  • Правка реестра Windows.

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

Что вы делаете, вы открываете реестр и переходите вот по такому пути, лично я для быстрого поиска по реестру использую утилиту register jump, делается это либо локально, если принтер подключен по USB, либо же на сервере терминалов, если используются они.

В моем случае это HP M1212, но таких полным полно, Canon, Xerox и так далее.

Находим там параметр PrinterDriverAttributes, по умолчанию там будет стоять значение 0, нужно поменять его на 1. После чего вы смело перезагружаете службу печати либо же сам сервер.

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

Переходим к практике

Чтобы не загромождать статью, я не буду приводить кучу проверок (на то, что компьютер доступен, что у нас есть доступ к WMI и т.д.).

Итак, для начала нам нужно узнать путь к очереди печати, т.е. посмотреть значение реестра удалённого компьютера. Для этого используем .NET класс RegistryKey.

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

$ServerKey=Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(
    ::LocalMachine, $ComputerName)

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

$Key=$ServerKey.OpenSubKey('SYSTEM\CurrentControlSet\Control\Print\Printers')

Переменная $Key содержит весь подраздел Printers (на скриншоте выше). Нам из этого раздела нужно только одно значение:

$DefaultSpoolDirectory=$Key.GetValue('DefaultSpoolDirectory')

Переменная $DefaultSpoolDirectory содержит тот самый путь к файлам очереди печати:

PS C:\> $DefaultSpoolDirectory
C:\WINDOWS\System32\spool\PRINTERS

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

получить путь

Это можно сделать простой манипуляцией со строкой:

$RemoteDefaultSpoolDirectory='\\'+$ComputerName+'\'+$DefaultSpoolDirectory + '$'+$DefaultSpoolDirectory.Substring(2)

Т.е. просто дописываем в строку (наш локальный путь) недостающие символы.

Теперь всё готово, можем останавливать службу и очищать очередь печати.

Останавливаем службу печати:

# Получаем службу$Service=Get-WmiObjectWin32_Service @PSBoundParameters

# Останавливаем службу$Service.StopService()

На всякий случай поясню – в данном случае при обращении к WMI используется сплаттинг, если такая форма кажется незнакомой и пугающей рекомендую почитать соответствующую статью, или воспользоваться более привычной формой:

$Service=Get-WmiObjectWin32_Service`-Filter"name = 'spooler'"`-ComputerName$ComputerName

После остановки службы можно очищать очередь печати, но как известно аппетит приходит во время еды, и мне захотелось ещё посмотреть на то, сколько мусора там собралось:

# Если в очереди печати что-то естьif ($ContentSpoolDirecrory=Get-ChildItem$RemoteDefaultSpoolDirectory-Force)
{
    # Считаем размер каталога с очередью печати$FolderSize= ($ContentSpoolDirecrory |
        Measure-Object-PropertyLength-Sum).Sum  1Mb
    
    # Выводим"`nВ {0} находится {1} файл(а/ов), общим объёмом {2:N} МБ"-f$RemoteDefaultSpoolDirectory, $ContentSpoolDirecrory.Count, $FolderSize# Очищаем каталог$ContentSpoolDirecrory | Remove-Item-Force
}

Вообще общепризнанным “best practice” не рекомендуется выводить простой текст в выводе скрипта, но так как это не было целью работы, и мне уже было лень с этим возиться, поэтому я просто воспользовался оператором –f.

Осталось только запустить службу:

$Service.StartService()

Если нужно перезапустить (остановить/запустить) другую службу, действия будут аналогичными, при необходимости можно имя службы и удалённого ПК засунуть в параметры, и запускать/останавливать/перезапускать любые службы на любых компьютерах Только нужно проверить зависимости и убедиться в том, что заданную службу можно останавливать.

Схема со Screwdrivers

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

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

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

Как очистить очередь печати принтера (Windows)

Проблема: документы не удаляются из очереди, причем не помогает ни отключение принтера, ни перезагрузка компьютера.

В этом случае используем жесткий метод очистки, описанный ниже.

Необходимо открыть командную строку, запущенную от имени администратора, и выполнить следующие команды:

net stop spooler
del %systemroot%\system32\spool\printers\*.shd
del %systemroot%\system32\spool\printers\*.spl
net start spooler

Для ленивых Cmd файл в архиве remove_printer_jobs.zip217 Байт. (Запускать от имени Администратора)

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

Причины этих проблем разделим следующим образом.

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

Версии драйверов.

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

Высокая нагрузка и нестабильность драйверов в терминальной среде.

Нестабильная работа драйверов и, соответственно, перегрузка ими диспетчера очереди печати (по русски – «спулера») вызывала (и будет вызывать, если не чего не делать), остановку всего процесса печати на сервере, а иногда и остановку (зависание) ОС сервера в целом.

До выхода Windows Server 2008, штатных средств по оптимизации нагрузки спулера в ОС Windows Server не было.

Поэтому единственным адекватным методом борьбы с регулярным зависанием спулера (и соответственно, массовыми звонками в тех. поддержку от разгневанных пользователей), был bat-ник, по расписанию превентивно перезапускающий процесс spoolsv.exe (например, утром и в обеденное время), освобождая спулер от висящих запросов и очередей.

С выходом Windows Server 2008 и Windows 7 появилась возможность изоляции драйверов принтера. Данная возможность позволяет драйверу принтера подгружать задачи не в Spoolsv.exe, а специальный под-процесс PrintIsolationHost.exe.

При такой конструкции, зависание драйвера одного принтера, не вешает всю очередь печати, поскольку встает только один под-процесс PrintIsolationHost.exe, а сам процесс спулера spoolsv.exe остается работоспособным.

Теперь пару слов о настройке. Диспетчер печати по умолчанию выполняет драйверы печати в изолированном процессе. Изменить можно при помощи групповой политики, параметр «Выполнять драйверы принтеров в изолированных процессах» .

Также важен еще один параметр групповой политики это – «Переопределить параметр совместимости выполнения драйвера печати»

Для того чтобы включить изоляцию драйверов принтеров, нужно использовать редактор локальной групповой политики (gpedit.msc):

Откройте gpedit.msc и последовательно перейдите:

Параметры компьютера (Computer Configuration) -> Административные шаблоны (Administrative Templates)-> Принтеры (Printers).

Среди перечня политик нужно включить следующие:

Выполнить драйверы принтеров в изолированных процессах (Execute print drivers in isolated processes)

Переопределить параметр совместимости выполнения драйвера печати, назначенный драйвером печати (Override print driver execution compatibility setting reported by print driver)

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

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

В ситуации, когда с терминального сервера необходимо печатать на 10-ках различных печатающих устройствах (в зоопарке из принтеров, если быть точнее), многие из которых не имеют рабочих драйверов для терминалов, следует применять функцию TS Easy Print.

TS Easy Print и сторонние решения вроде коммерческого продукта ScrewDrivers — в данном материале не рассматриваются.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий