Формат очереди печати виртуального принтера установлен как raw

Обновлено: 03.05.2024

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

Неудалось задание печати

Некоторые сценарии, описанные в этом разделе:

  • Приложение на клиенте перестает отвечать при печати.
  • Задание печати никогда не достигает принтера.
  • Задания печати застряли в очереди.

Выполните следующие действия на клиентский компьютер:

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

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

Очистить поле Функции расширенных функций печати на вкладке Advanced на листе свойств принтера.

Проверьте папку Spool, чтобы узнать, содержит ли она старые файлы. Папка Spool по умолчанию — %systemroot%\System32\Spool\Printers.

Сброс spooler печати на клиенте, а затем попробуйте еще раз.

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

Нет вывода печати

  1. Очистить поле "Включить расширенные функции печати" на вкладке Advanced свойств принтера.
  2. Создайте очередь печати для устройства и проверьте печать в новой очереди.
  3. Перезапустите службу Spooler.
  4. Обновление драйвера принтера до последней версии из OEM. Однако, если драйвер, который используется, уже является последней версией, попробуйте перейти на универсальный драйвер в поле.
  5. Проверьте папку Spool, чтобы узнать, содержит ли ir старые файлы. При правильной печати файлы в папке Spool удаляются при печати заданий. Папка Spool по умолчанию: %systemroot% \ \ Spool \ Printers System32.
    1. Вы можете проверить расположение папки Spool, проверив значение реестра в следующем подкайке DefaultSpoolDirectory реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers .
    2. Перемещение старых файлов, которые находятся в папке Spool, чтобы узнать, не возникла ли проблема. Поврежденные файлы в папке Spool могут привести к проблемам службы печати Spooler.

    Может потребоваться остановить службу Print Spooler, чтобы переместить файлы из папки Spool.

    Медленная печать или неожиданный выход

    Некоторые сценарии, описанные в этом разделе:

    • Задание печати занимает "X" минут до завершения.
    • Пользователи испытывают медленную скорость при печати из всех приложений.
    • Только Office или конкретные приложения не спеша печатать.
    • Работа занимает много времени, чтобы размыться.
    • Работа занимает много времени для печати.
    • Медленная печать в Hyper-V, RDS или Azure.
    • При попытке печати с помощью настраиваемой программы вы испытываете медленную печать.

    Определите, где происходит замедление, при запуске теста очереди на паузу:

    • Приостановка очереди на клиенте и сервере.
    • В клиенте отправьте задание из приложения и измерйте, как быстро оно создается.
    • Разгрузка клиентской очереди, а затем измерение быстрости переноса задания в очередь на сервере Print.
    • Разгрузка очереди на сервере Print для измерения быстрости отправки задания на фактическое оборудование печати. Это поможет вам сузить поиск в том месте, где происходит замедление.

    Проверьте папку Spool, чтобы узнать, содержит ли она старые или осиротевших файлов. При правильной печати файлы в папке Spool удаляются по мере печати заданий. Папка Spool по умолчанию: systemroot% \ \ Spool \ Printers System32.

    Вы можете проверить расположение папки Spool, проверив значение DefaultSpoolDirectory в следующем подкайке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers .

    Проверьте, есть ли какие-либо .SHD файлы в .SPL принтерах \ \ \ spool%systemroot% System32. Если есть, сделайте следующее:

    1. Запустите MSINFO32.exe и изучите среду программного обеспечения ,распечатайте задания, чтобы узнать, можно ли определить принтер или задание, которое является источником проблемы.
    2. MSINFO32 отображает только локальные сведения о заданиях печати. Поэтому, скорее всего, это будет полезно только для проблем с распечатывщиком терминала Server, если пульпер печати не был остановлен. Файлы, застряв в папке Spool, должны быть удалены или удалены после того, как пулер будет остановлен. При внесении изменений вручную (файлы или записи реестра) следует хотя бы остановить и перезапустить шпалер.
    3. Перемещение старых или осиротевших файлов в папке Spool, чтобы узнать, существует ли проблема. Поврежденные файлы в папке Spool могут привести к проблемам службы печати Spooler. Для удаления файлов из папки Spool может потребоваться остановить службу Print Spooler.

    Визуально проверьте и задокумляйте, сканирует ли антивирус папку Spool .SHD или , .SPL или .TMP файлы. Антивирусные программы могут вызывать множество побочных эффектов, таких как ошибки с отказом в доступе и застрять задания печати в папке Spool.

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

    Перед удалением сторонних ключей (где ABC является сторонним компонентом), убедитесь, что клиент не имеет подкайки ниже этого, определяющие порты принтера …\Print\Monitors\<ABC> TCP/IP.Кроме того, необходимо искать в реестре запись "ABC".Все драйверы печати, которые имеют строку реестра "Monitors"="ABC", должны быть изменены таким образом, чтобы "Monitor"=" (равной ничему).

    1. Следует начать удаление сторонних компонентов печати. Для этого удалите компоненты печати, которые просто удалить, и не уменьшайте функциональность печати. К ним относятся print Monitors, Print Processors и Print Providers.
    2. Всегда HKLM\SYSTEM\CurrentControlSet\Control\Print экспортировать, прежде чем вручную удалить компоненты печати из реестра. Затем переименуем файл, .txt чтобы избежать случайного восстановления.

    Исключения для .SHD и .SPL файлы создаются в антивирусе.

    Печать аварии Spooler

    1. Проверьте папку Spool, чтобы узнать, содержит ли она старые файлы. При правильной печати файлы в папке Spool удаляются по мере печати заданий. Папка Spool по умолчанию: принтеры \ \ Spool \ System32 system32.
    2. Вы можете проверить расположение папки Spool, проверив значение в следующем подкайке DefaultSpoolDirectory реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers .
    3. Перемещение старых файлов, которые находятся в папке Spool, чтобы узнать, не возникает ли проблема. Поврежденные файлы в папке Spool могут привести к проблемам службы печати Spooler. Для удаления файлов из папки Spool может потребоваться остановить службу Print Spooler.
    4. По умолчанию служба Print Spooler зависит только от RpcSs. Чтобы проверить зависимости Spooler, проверьте значение в следующем подкайке DependOnService реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler .
    5. Убедитесь, что зависимые службы запущены. Если в дополнение к RpcSs перечислены другие зависимые службы, изменить значение реестра, чтобы удалить все зависимости, кроме DependOnService RpcSs.
    6. Так как иногда бывает трудно определить, является ли задание печати в настоящее время spooled, пауза принтера позволит задание быть spooled, но не печатается. Это позволит вам вовремя подтвердить, что задание печати раскошелилось, что поможет вам еще больше сузить устранение неполадок.
      • Еще один способ проверки того, что на сервере происходит перенастройка задания печати клиента, заключается в настройке принтера для использования порта NUL. Так как порт NUL является виртуальным портом, а не фактическим портом, задания, отправленные в NUL, не являются пустой бумагой и не мешают заданиям печати, которые печатаются в другие установленные порты.
      • По умолчанию порт NUL не указан в списке доступных портов принтера. Однако его можно добавить, изменив настроенный порт принтера на локальный порт, выбрав кнопку New Port, введя NUL в качестве имени порта, а затем выбрав ОК. Порт NUL указан в списке Порты в свойствах Print Server, и его можно использовать для тестирования любого установленного принтера.
      • После установки порта NUL приостановка принтера с помощью этого порта и печать на принтере от клиента. В очереди печати для проверяемого принтера должно быть замаскировано задание печати. Возобновим работу принтера для обработки распупухливного задания печати (затем пули удаляются).
      • Замените сторонние драйверы Windows драйверами в поле. Важно понимать, что для истинного драйвера в поле имеется только один источник: файлDriver.cab, который Windows средства распространения. Драйверы, которые находятся на сайте Windows каталога, — это microsoft Windows Лаборатория качества оборудования (WHQL),подписанная, но не протестированная Корпорацией Майкрософт. Это означает, что драйверы соответствуют опубликованным критериям, но не были протестированы Корпорацией Майкрософт так, как это было с другими драйверами в кабине рассылки.

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

    Возможно, вам придется включить аудит определенных объектов (принтеров). Если вы не сузили фокус этой проблемы до определенных принтеров, вам придется включить аудит отказа на всех принтерах, предприняв следующие действия:

    я экспериментирую с Зебра TTP8200 термопринтер. Для моего приложения мне нужно печатать трассировки типа плоттера непрерывно, пока пользователь не нажмет кнопку остановки. У меня была игра с языком ZPL, и я могу успешно генерировать растровые данные и выгружать свою растровую линию (или несколько строк) за раз, выводя ZPL в качестве необработанных данных.

    Я демонстрационный код Microsoft для вывода необработанных данных на принтер и это прекрасно работает, кроме одного выпуск: катушка. Оказывается, каждый раз я выводил некоторые данные с помощью MS rawprn.exe-код на самом деле наматывается как задание печати, а затем передается на принтер. Это занимает до 10 секунд, чтобы пройти через спулер, очевидно, слишком медленно. Отключение буферизации в драйвере не помогает, это просто означает, что программа зависает, пока задание передается через буферизатор и печать завершается.

    есть ли способ обойти спулер и выходные данные прямо на этот USB принтер? Мои исследования до сих пор не нашли ничего похожего на Windows API. В идеале, я хотел бы иметь возможность использовать принтер, как серийный принтер - откройте порт и вставьте данные.

    большое спасибо заранее за любые подсказки!

    Если принтер USB доступен как COM-порт, вы можете просто написать в COM-порт. Вот так, из подсказки DOS:

    в первом примере будут выведены результаты dir команда для принтера.

    Или, вот еще один пример:

    в первом примере будет выведено содержимое file.txt на принтер.

    вывод правильно отформатированных данных ZPL будет сложнее, чем простой текст. Я получил это однако работайте с Linux, используя Ruby (и команды Epson/ESC).

    есть ли способ обойти буферизатор и вывести данные прямо на это USB-принтер?

    Да, абсолютно. Он встроен в большинство ОС, печать raw через USB немного менее очевидна, чем Ethernet и COM/LPT. Обратите внимание, что многие приложения, такие как блокнот, не могут печатать raw, поэтому приложение должно поддерживать и это.

    1. установите соответствующий драйвер для USB-принтера. Проверьте свойства принтера, чтобы узнать, USB-порт он использует. Это может быть USB001 и т. д.
    2. используя устройства и принтеры, добавьте второй принтер. Локальный порт, выберите только что созданный порт (например, USB001) Примечание: некоторые версии Windows имеют флажок для автоматического определения, если он есть, снимите этот флажок.
    3. Производитель: Generic, Принтер: Generic / Text Only
    4. используйте драйвер, который в настоящее время установлен
    5. дайте принтеру имя, которое отличает его от уже созданного, т. е. Zebra TTP8200 Raw.
    6. не разделяю
    7. не печатать тестовую страницу, Finish

    теперь с помощью приложения raw printing используйте вновь созданный принтер.

    С. П. Эти инструкции также доступны здесь, со скриншотами,как часть учебника по печати с открытым исходным кодом Java raw. Проект предоставляет учебные пособия для других платформ (Ubuntu, OS X), как что ж.

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

    Спасибо за комментарии.

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

    Обновлено: 07.07.2021. Microsoft выпустила обновление KB5004945 для Windows 10, версия 21H1, 20H2 и 2004 для устранение уязвимости PrintNightmare.

    Microsoft недавно расскрыла информацию о новой уязвимости удаленного выполнения кода в Windows, которая использует диспетчер очереди печати Windows. Уязвимость активно эксплуатируется, и поэтому компания опубликовала сразу два предварительных решения для защиты систем от атак, использующих данную уязвимость.

    Известно, что уязвимость CVE-2021-34527 (PrintNightmare) затрагивает как серверные операционные системы, такие как Windows Server 2008, 2012, в том числе Windows Server 2016, так и десктопные версии Windows 7 SP1, Windows 8.1, Windows 10 1809 и выше, в том числе Windows 10 21H1.

    Компания Acros Security, разработчик 0patch Agent для Windows, проанализировав уязвимость, предположила, что проблема затрагивает преимущественно серверные версии Windows Server. Однако, уязвимость может также затрагивать и десктопные версии Windows 10 и серверные версии Windows Server без DC (контроллер доменов), при условии внесения следующих изменений в конфигурацию по умолчанию:

    Описание уязвимости CVE-2021-34527 (PrintNightmare):

    Уязвимость удаленного выполнения кода эксплуатируется в случаях, когда служба диспетчера очереди печати Windows неправильно выполняет привилегированные файловые операции. Злоумышленник, успешно воспользовавшийся этой уязвимостью, может запустить произвольный код с правами SYSTEM. После этого злоумышленник может установливать программы; просматривать, изменять или удалять данные; или создавать новые учетные записи с полными правами пользователя.

    Атака вовлекает аутентифицированного пользователя, вызывающего RpcAddPrinterDriverEx ().

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

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

    В качестве второго решения требуется доступ к редактору групповой политики, который доступнен только в версиях Windows Pro и Enterprise.

    Два решения для закрытия уязвимости CVE-2021-34527 (PrintNightmare)

    Отключение диспетчер очереди печати

    Чтобы отключить диспетчер очереди печати, выполните следующие рекомендации:

    • Откройте PowerShell с повышенными привилегиями, например, используя сочитание клавиш Win + X и из выпадающего списка выберите Windows PowerShell (Администратор).
    • Поочередно запустите следующие команды:

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


    Обратите внимание. После внесения изменений вы больше не сможете использовать функцию печати (если снова не включите службу диспетчера очереди печати).

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

    Чтобы отключить входящую удаленную печать, выполните следующие рекомендации:

    • Нажмите сочетание клавиш Windows + R , чтобы открыть окно команды «Выполнить».
    • Введите gpedit.msc и нажмите ОК.
    • В открывшемся Редакторе групповой политики перейдите по следующему пути: Конфигурация компьютера / Административные шаблоны / Принтеры
    • Два раза нажмите на политику Разрешить очереди печати принтера прием клиентских подключений.
    • Установите для политики значение Отключено.
    • Нажмите на кнопку Применить.


    0Patch разработали и опубликовали микропатч, который устраняет проблему удаленного выполнения кода диспетчера очереди печати. Однако исправление было создано только для серверных версий Windows Server, в частности для Windows Server 2008 R2, Windows Server 2021, Windows Server 2016 и Windows Server 2019.

    Обновлено: 07.07.2021. Microsoft выпустила обновление KB5004945 для Windows 10, версия 21H1, 20H2 и 2004 для устранение уязвимости PrintNightmare.

    Microsoft недавно расскрыла информацию о новой уязвимости удаленного выполнения кода в Windows, которая использует диспетчер очереди печати Windows. Уязвимость активно эксплуатируется, и поэтому компания опубликовала сразу два предварительных решения для защиты систем от атак, использующих данную уязвимость.

    Известно, что уязвимость CVE-2021-34527 (PrintNightmare) затрагивает как серверные операционные системы, такие как Windows Server 2008, 2012, в том числе Windows Server 2016, так и десктопные версии Windows 7 SP1, Windows 8.1, Windows 10 1809 и выше, в том числе Windows 10 21H1.

    Компания Acros Security, разработчик 0patch Agent для Windows, проанализировав уязвимость, предположила, что проблема затрагивает преимущественно серверные версии Windows Server. Однако, уязвимость может также затрагивать и десктопные версии Windows 10 и серверные версии Windows Server без DC (контроллер доменов), при условии внесения следующих изменений в конфигурацию по умолчанию:

    Описание уязвимости CVE-2021-34527 (PrintNightmare):

    Уязвимость удаленного выполнения кода эксплуатируется в случаях, когда служба диспетчера очереди печати Windows неправильно выполняет привилегированные файловые операции. Злоумышленник, успешно воспользовавшийся этой уязвимостью, может запустить произвольный код с правами SYSTEM. После этого злоумышленник может установливать программы; просматривать, изменять или удалять данные; или создавать новые учетные записи с полными правами пользователя.

    Атака вовлекает аутентифицированного пользователя, вызывающего RpcAddPrinterDriverEx ().

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

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

    В качестве второго решения требуется доступ к редактору групповой политики, который доступнен только в версиях Windows Pro и Enterprise.

    Два решения для закрытия уязвимости CVE-2021-34527 (PrintNightmare)

    Отключение диспетчер очереди печати

    Чтобы отключить диспетчер очереди печати, выполните следующие рекомендации:

    • Откройте PowerShell с повышенными привилегиями, например, используя сочитание клавиш Win + X и из выпадающего списка выберите Windows PowerShell (Администратор).
    • Поочередно запустите следующие команды:

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


    Обратите внимание. После внесения изменений вы больше не сможете использовать функцию печати (если снова не включите службу диспетчера очереди печати).

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

    Чтобы отключить входящую удаленную печать, выполните следующие рекомендации:

    • Нажмите сочетание клавиш Windows + R , чтобы открыть окно команды «Выполнить».
    • Введите gpedit.msc и нажмите ОК.
    • В открывшемся Редакторе групповой политики перейдите по следующему пути: Конфигурация компьютера / Административные шаблоны / Принтеры
    • Два раза нажмите на политику Разрешить очереди печати принтера прием клиентских подключений.
    • Установите для политики значение Отключено.
    • Нажмите на кнопку Применить.


    0Patch разработали и опубликовали микропатч, который устраняет проблему удаленного выполнения кода диспетчера очереди печати. Однако исправление было создано только для серверных версий Windows Server, в частности для Windows Server 2008 R2, Windows Server 2021, Windows Server 2016 и Windows Server 2019.

    Читайте также: