Открыть сервис

Служба диспетчера печати

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

История

Впервые служба диспетчера печати (Print Spooler) появилась в ранних версиях Windows, начиная с Windows 95, где она была реализована как часть подсистемы печати. В Windows NT 3.1 и последующих версиях NT-линейки она была переработана для работы в многопользовательской среде с повышенной надёжностью. В Windows 2000 и Windows XP служба получила поддержку сетевой печати и улучшенное управление очередями. В Windows Vista и Windows 7 была добавлена поддержка XML Paper Specification (XPS) и улучшена интеграция с драйверами. В Windows 10 и Windows 11 служба продолжает развиваться, включая функции диагностики и безопасности, особенно после серии уязвимостей, выявленных в 2020-х годах.

Архитектура и принцип работы

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

  • Очередь печатиструктура данных, хранящая задания в порядке их поступления или по заданному приоритету. Каждое задание представляет собой файл-спул (обычно в формате EMF, XPS или RAW), содержащий команды для принтера.
  • Буферизация — процесс временного сохранения данных задания на жёстком диске (в папке %SystemRoot%\System32\spool\printers). Это позволяет приложению быстро завершить отправку документа, а служба затем передаёт данные на принтер в фоновом режиме.
  • Драйвер принтерапрограммное обеспечение, преобразующее команды приложения в формат, понятный конкретному принтеру (например, PCL, PostScript, ESC/P). Служба загружает драйвер и передаёт ему данные.
  • Монитор порта — компонент, отвечающий за физическую передачу данных на принтер через интерфейс (LPT, USB, TCP/IP, Bluetooth). Примеры: стандартный монитор порта Windows, монитор для сетевых принтеров.
  • API печати — набор интерфейсов (Win32 API, .NET Framework), через которые приложения взаимодействуют со службой. Основные функции: OpenPrinter, StartDocPrinter, WritePrinter, EndDocPrinter.

Процесс печати выглядит следующим образом:

  1. Приложение (например, текстовый редактор) вызывает функцию печати, передавая данные в формате GDI или XPS.
  2. Служба создаёт задание в очереди, сохраняет данные в файл-спул и уведомляет драйвер.
  3. Драйвер преобразует данные в команды принтера.
  4. Монитор порта отправляет команды на принтер через выбранный интерфейс.
  5. После завершения передачи задание удаляется из очереди, а пользователь получает уведомление (если настроено).

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

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

  • Панель управления → Устройства и принтеры — основной интерфейс для добавления, удаления и настройки принтеров, просмотра очереди печати.
  • Службы Windows (services.msc) — позволяет запускать, останавливать, перезапускать службу, а также изменять тип запуска (автоматический, ручной, отключён). По умолчанию тип запуска — «Автоматически».
  • Командная строка — команды net start spooler, net stop spooler, sc config spooler start= auto для управления службой.
  • Редактор реестра — параметры службы хранятся в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler. Здесь можно настроить тайм-ауты, пути к папкам спула и другие параметры.

Основные параметры реестра

ПараметрТипОписание
StartDWORDТип запуска: 2 — автоматический, 3 — ручной, 4 — отключён
DependOnServiceMULTI_SZСписок служб, от которых зависит диспетчер печати (например, RPCSS)
SpoolDirectoryREG_SZПуть к папке для хранения файлов-спулов (по умолчанию %SystemRoot%\System32\spool\printers)
MajorVersionDWORDВерсия службы (обычно 3 для Windows 10/11)

Типы заданий печати

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

  • EMF (Enhanced Metafile) — стандартный формат для Windows, содержит векторные и растровые команды, позволяющие драйверу выполнять часть обработки на стороне клиента.
  • XPS (XML Paper Specification) — формат на основе XML, используемый в Windows Vista и новее, обеспечивает более точное отображение.
  • RAW — формат, передающий данные непосредственно на принтер без обработки драйвером (например, для PostScript-принтеров).
  • TEXT — простой текстовый формат, используемый для старых принтеров.

Проблемы и уязвимости

Служба диспетчера печати исторически была источником уязвимостей, связанных с повышением привилегий и удалённым выполнением кода. Наиболее известные:

  • CVE-2021-34527 (PrintNightmare) — критическая уязвимость, позволяющая злоумышленнику с правами обычного пользователя выполнить произвольный код с системными привилегиями через службу спулера. Исправлена в обновлениях безопасности Microsoft в июле 2021 года.
  • CVE-2022-22718 — уязвимость, связанная с некорректной обработкой запросов на печать из ненадёжных источников.
  • Проблемы с драйверами — некорректные или устаревшие драйверы принтеров могут вызывать зависание службы, ошибки печати или утечки памяти.

Для защиты рекомендуется:

  • Регулярно устанавливать обновления Windows.
  • Отключать службу на серверах, где печать не требуется.
  • Использовать политики безопасности для ограничения доступа к очереди печати.
  • Включать аудит событий печати через журнал Windows (Event Viewer → Applications and Services Logs → Microsoft → Windows → PrintService).

Применение в сетевой среде

В корпоративных сетях служба диспетчера печати используется для централизованного управления печатью. Сервер печати (на базе Windows Server) запускает службу, к которой подключаются клиентские компьютеры. Это позволяет:

  • Назначать общие принтеры для нескольких пользователей.
  • Управлять квотами печати (ограничение количества страниц).
  • Вести журнал печати для аудита.
  • Использовать групповые политики для настройки параметров печати.

В Windows Server служба интегрирована с ролью «Печать и сканирование документов», которая включает дополнительные компоненты: диспетчер очереди печати, монитор портов, поддержку протоколов LPD (Line Printer Daemon) и Internet Printing Protocol (IPP).

Альтернативы и аналоговые системы

В других операционных системах функции, аналогичные службе диспетчера печати, выполняют:

  • CUPS (Common Unix Printing System) — в Linux и macOS. CUPS использует протокол IPP и поддерживает драйверы в формате PPD (PostScript Printer Description).
  • LPRng (Line Printer Next Generation) — устаревшая система для Unix, основанная на протоколе LPD.
  • System V LP — служба печати в системах на базе System V.

В Windows также существует возможность использования альтернативных драйверов и мониторов портов, например, для подключения к принтерам через облачные сервисы (Microsoft Universal Print, Google Cloud Print — прекращён в 2020 году).

Интересные факты

  • Служба диспетчера печати может работать в «безопасном режиме» (Safe Mode), но только с базовыми драйверами.
  • В Windows 10 и 11 существует возможность отключения службы через групповые политики, что используется в средах с высокой безопасностью (например, в военных или правительственных учреждениях).
  • Ошибка службы часто приводит к тому, что задания печати «зависают» в очереди и не удаляются. Для очистки очереди вручную можно остановить службу, удалить файлы из папки спула и перезапустить службу.
  • В Windows 2000 и XP существовала уязвимость, позволяющая удалённо печатать на принтере без аутентификации (CVE-2000-0979).

Источники

  • Microsoft Docs. «Print Spooler Service Architecture». Windows Server documentation.
  • Microsoft Security Response Center. «CVE-2021-34527 PrintNightmare Advisory». July 2021.
  • Microsoft Support. «How to clear the print queue in Windows». KB article 946737.
  • Windows Internals, 7th Edition. Pavel Yosifovich, Mark Russinovich, David Solomon, Alex Ionescu. Microsoft Press, 2021.
  • National Vulnerability Database (NVD). «CVE-2022-22718». NIST.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →