Окончание драйверов принтера Windows ── как готовить печать форм и этикеток в бизнес-приложениях

· Обновлено: · · Windows, Разработка для Windows, Windows 11, CSharp, .NET, WinForms, WPF, Печать, Формы, Драйвер принтера, IPP, Эксплуатация, Техническая консультация

История изменений (первая версия, опубликована 1 Sep 2026)
Первая публикация

«Поставили новый ПК — тот же принтер, а выбор бумаги и лотков другой.» «Сохранённые настройки печати не возвращаются.» «Принтер этикеток пропал из списка.» Готовиться к окончанию сопровождения драйверов принтера — сделать так, чтобы при таких изменениях работа не останавливалась.

Сначала зафиксируйте: план окончания сопровождения драйверов и включение Windows protected print mode — разное. Дата плана сама по себе существующую печать разом не остановит. Зато в сценах, где меняется выбор драйвера или включают Windows protected print mode, настройки и назначение, от которых зависело приложение, теряются.12

Статья для разработчиков, которые сопровождают Windows-бизнес-приложения WinForms и WPF, и администраторов, которые разворачивают принтеры: что меняется, что смотреть, где править, как проверять. Выбор самих API печати и способа вывода PDF — в предыдущей Печать и PDF в Windows-приложениях: PrintDocument, WPF и библиотеки отчётов.

Исходная среда — Windows 11 (проверка WPP — 24H2 и новее), PowerShell 5.1 и новее (модуль PrintManagement), C# (.NET 6 и новее или .NET Framework 4.x, System.Drawing.Printing / System.Printing). Сложность — средняя.

1. Сначала выводы

Код печати не переписывают оптом: сначала подтверждают, «останется ли назначение», и уже потом правят места зависимости от драйвера.

Порядок решения — три ступени.

Порядок Что подтвердить Следующее действие
1. Назначение печати Останется ли очередь при WPP. Можно ли физический принтер зарегистрировать заново через Windows Ready Print Если не останется — сначала готовят другой путь вывода или решают WPP не использовать
2. Зависимости приложения Нет ли зависимости от настроек драйвера, имени очереди, виртуального принтера, отправки RAW Правят соответствующие места. Включая зависимости внутри SDK и библиотеки форм
3. Проверить фактическим выводом Меняются ли драйвер и очередь — формы, PDF, этикетки всё равно выходят верно Среду, где WPP используют, проверяют включив; где не используют — другим порядком

Если только рисуют через PrintDocument или FixedDocument, в основе это объект проверки, не переписывания. Но если сама очередь назначения при WPP исчезает и зарегистрировать заново нельзя, даже без проблем в коде рисования печатать нельзя. Сначала нужен другой путь.

Если начинать с работы: перечень 5.1 → назначение по таблицам главы 4 и 5.1 → зависимости 5.2–5.5 → выбор пути главы 6 → проверка главы 7. Фон мест, где решение неясно, — главы 2–4.

Дальше Windows protected print mode сокращаем до WPP. «Очередь» — назначение печати, зарегистрированное в Windows; «спулер» — механизм, который принимает задание печати и передаёт его в назначение.

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 39, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

2. Что решено ── трёхступенчатая временная линия

2.1 Кончается поставка и обновление, не массовая остановка существующих драйверов

Первичный источник — Microsoft Learn, «End of servicing plan for third-party printer drivers on Windows». План объявили в сентябре 2023, даты пересмотрели в мае 2025. На момент написания план такой.1

Срок Что меняется На что смотреть стороне бизнес-приложения
15 января 2026 На Windows 11 и новее и Windows Server 2025 и новее новые драйверы принтера в Windows Update не кладут. Обновление существующих — по отдельному разбору При развёртывании нового ПК или принтера драйвер производителя прежним способом получить уже не обязательно получится
1 июля 2026 Ранжирование драйверов принтера меняют так, чтобы всегда предпочитать IPP class driver, поставляемый с Windows На устройствах, к которым IPP class driver тоже подходит, при замене ПК или повторном обнаружении принтера могут выбрать другой драйвер
1 июля 2027 Кроме исправлений безопасности обновления сторонних драйверов принтера не принимают Дату остановки обновлений не путать со сроком готовности на стороне приложения

Существующие драйверы по-прежнему ставят из Windows Update и установщика производителя; Microsoft говорит, что отключать функции драйверов v3/v4 не планирует. То есть это план поэтапно закончить поставку и обновление драйверов, а не план в тот день отключить драйверы, уже стоящие на ПК на месте.1

Что меняется и что нет при окончании драйверовСамо окончание сопровождения драйверов принтера вход API рисования приложения и существующие драйверы не меняет; бумага, собственные функции и имя очереди, которые возвращает драйвер, сменяются, только когда при новой установке или повторном обнаружении выбирают другой драйвер; изменения от включения Windows protected print mode, включая удаление виртуальных принтеров, — другой механизм, глава 4Окончание сопровождения драйверов принтераЧто не меняетсяКогда при новой установке или повторном обнаружении выбирают другой драйверЧто сменяетсяВход API рисованияСуществующие драйверыБумага, лоток, собственные функцииИмя очереди

Рис. 1: Одного окончания сопровождения мало, чтобы что-то сменилось; сведения и имена, которые давал драйвер, сменяются, когда выбирают другой драйвер. Изменения от включения WPP, включая удаление виртуальных принтеров, — другой механизм (глава 4).

2.2 На месте драйвер меняется в основном в двух сценах

Даже если план существующие драйверы не останавливает, в следующих сценах среда, которую видит приложение, меняется.

Сцена Что происходит
Замена ПК, переустановка ОС, повторное обнаружение принтера Если к устройству подходит и IPP class driver, ранжирование может выбрать другой драйвер, чем раньше
Включение WPP Принтеры на сторонних драйверах удаляют. Совместимые регистрируют заново через Windows Ready Print; несовместимые как есть не работают

Когда к одному устройству подходят несколько пакетов драйверов, Windows ставит каждому ранг и выбирает лучший. Изменение 1 июля 2026 предпочитает IPP class driver в этом выборе. На устройствах, где IPP class driver кандидатом не становится, пакет производителя по-прежнему могут выбрать.31

Два пути, которыми на месте сменяется драйверНа устройствах, к которым подходит IPP class driver, при замене ПК, переустановке ОС или повторном обнаружении принтера ранжирование выбирает IPP class driver и драйвер сменяется; при включении Windows protected print mode принтеры на сторонних драйверах удаляют; модели, которые можно зарегистрировать заново через Windows Ready Print, меняют драйвер, модели, которые нельзя, теряют назначение печатиДаНетПК на местеЗамена ПК, переустановка ОС, повторное обнаружениеВключение Windows protected print modeПредпочтение на устройствах, к которым подходит IPP class driverУдалить принтеры на сторонних драйверахДрайвер сменяетсяМожно зарегистрировать заново через Ready Print?Назначение печати исчезает

Рис. 2: Разделив план окончания сопровождения и WPP, отделяют сцену смены драйвера от сцены, где пропадает само назначение печати.

Здесь важно не считать IPP-совместимость и сертификацию Mopria одним условием.

Условие Для какого решения в основном
IPP class driver подходит к устройству Может ли смена ранжирования сменить драйвер
Есть сертификация Mopria; при сетевом подключении IPP включён и достижим; при USB — режим IPP over USB Можно ли физический принтер под WPP зарегистрировать заново как Windows Ready Print

На устройствах без сертификации Mopria, но с IPP, драйвер может смениться и без WPP из-за смены ранжирования. Наоборот, одно имя драйвера «Microsoft IPP Class Driver» ещё не подтверждает, что под WPP пользоваться можно.14

Подход IPP class driver и сертификация Mopria — разные условияЕсли принтер умеет IPP, смена ранжирования может выбрать IPP class driver и сменить драйвер; сертификация Mopria — отдельное условие, решает, можно ли зарегистрировать заново под Windows protected print mode; у сетевых нужна достижимость включённого IPP, у USB — режим IPP over USBДаНетНетДаНетДаНетДаДаНетПринтерУмеет IPP?Может сменитьсяОстаётся производителяЕсть сертификация Mopria?Под WPP зарегистрировать заново нельзяUSB?IPP включён и достижим?Под WPP можно зарегистрировать зановоРежим IPP over USB?

Рис. 3: Влияние ранжирования — по IPP; останется ли под WPP — по сертификации Mopria плюс достижимость включённого IPP (при USB — режим IPP over USB).

2.3 У подписи драйвера есть исключения, но продолжение не гарантируют

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

  • Для принтеров, которые не могут получить сертификацию Mopria.
  • Пакет, у которого верхняя граница целевой ОС — Windows 10 и ниже.
  • Машинный драйвер ARM64.

И WHQL, и Attestation по умолчанию блокируют; ручной разбор — с документом обоснования. Даже при выполнении условий не гарантируют, что производитель подаст и Microsoft одобрит.5 И получить подписанный драйвер и пользоваться им в среде с включённым WPP — разное. Готовность принтеров этикеток и чеков — глава 6.

Условия, при которых после 15 января 2026 подпись драйвера ещё могут признатьПодача драйвера производителем по умолчанию блокируется; на отдельный разбор заявки на исключение кладут только то, что попадает в одно из трёх: принтер без сертификации Mopria, пакет с верхней границей Windows 10 и ниже, машинный ARM64; разбор может одобрить, подпись не гарантируютПодача драйвера производителемПо умолчанию блокируютМодели без сертификации MopriaВерхняя граница Windows 10 и нижеМашинный ARM64Заявка на исключение возможнаОтдельный разборИногда одобряют (гарантии нет)

Рис. 4: Условие даёт только попасть на разбор; подпишут ли — не гарантируют.

3. Устройство ── прежний путь драйвера и Windows Ready Print

3.1 Меняется путь печати за API рисования

В прежней печати Windows приложение отдаёт команды рисования GDI или XPS, спулер принимает задание, драйвер принтера переводит в язык принтера (PDL) и отправляет. И путь печати GDI, и путь XPS стоят на этой структуре.6

Прежний путь драйвераКоманды рисования GDI или XPS бизнес-приложения спулер с правами SYSTEM ставит в очередь; сторонний драйвер v3 или v4 переводит в собственный PDL — без изоляции драйвера внутри самого спулера, при общей или отдельной изоляции в другом процессе — и отправляет на принтерНетОбщая / отдельнаяБизнес-приложение (GDI / XPS)Спулер (права SYSTEM)Изоляция драйвераСторонний драйвер внутри самого спулераСторонний драйвер в другом процессеПеревод в собственный PDLПринтер

Рис. 5: На прежнем пути процесс меняется от изоляции, но структура одна: внутри стека печати сторонний код переводит в PDL.

Преемник — Windows Ready Print. Имя, которое связывает печать по IPP (Internet Printing Protocol), сканирование по eSCL и Universal Print; сторонний драйвер не нужен. Спроектирован для принтеров с сертификацией Mopria; плюс — независимость от архитектуры ЦП.7

С Windows 10 21H2 поставляется Microsoft IPP Class Driver, который ведёт принтеры, соответствующие Mopria, по сети и USB.1 Облачная очередь Universal Print пользуется поставляемым Universal Print Class Driver.8

Путь Windows Ready PrintКоманды рисования бизнес-приложения принимает спулер; поставляемый Microsoft IPP Class Driver на клиенте рендерит в PWG Raster или PDF и шлёт по IPP на принтер с сертификацией Mopria, либо поставляемый Universal Print Class Driver шлёт IPP over HTTPS в службу Universal Print; Windows protected print mode разрешает только этот путь Windows Ready PrintРазрешает только путь Ready PrintБизнес-приложение (GDI / XPS)СпулерMicrosoft IPP Class DriverРендер в PWG Raster / PDFПринтер с сертификацией Mopria (IPP)Universal Print Class DriverСлужба Universal Print (IPP over HTTPS)Windows protected print mode

Рис. 6: Windows Ready Print тоже идёт через спулер. Меняется то, кто переводит и отправляет: со стороннего драйвера на поставляемый class driver.

IPP — протокол на HTTP; принтер опознают URI вроде ipps://printer.example.com/ipp/print. PDL бездрайверной печати — немногие форматы на открытых стандартах вроде PWG Raster и PDF; итоговый документ рендерят на клиенте.9 В Universal Print спулер шлёт задание в службу IPP over HTTPS.8

Вход со стороны приложения не меняется. Приложение, которое рисует GDI или XPS, вызывает те же API. Меняется механизм дальше, который возвращает перечень бумаги и лотков, даёт собственные функции и переводит в PDL. Поэтому сильнее задевает не приложение, которое только рисует, а то, которое зависит от сведений драйвера и собственных настроек. Собственные функции производителя проверяют и как предоставление через Print Support App (PSA).10

3.2 У МФУ печать, факс и сканирование подтверждают раздельно

Перенести на Windows Ready Print можно, если устройство несёт эту функцию и реализует соответствующий протокол.1

Функция Что нужно при сетевом подключении Дополнительное условие при USB
Печать IPP Режим IPP over USB
Отправка факса IPP Fax Out Режим IPP over USB
Сканирование eSCL или WS-Scan Режим IPP over USB

Не решайте, что факс и сканирование тоже переедут, по одной печати Mopria.

Порядок раздельной проверки функций МФУБерут по одной используемой функции и по порядку подтверждают наличие на устройстве, протокол из таблицы, при USB — режим IPP over USB; результат печати на факс и сканирование не переносят, остальные функции проверяют отдельноДаНетДаНетДаНетДаНетВзять одну используемую функциюУстройство несёт эту функцию?Протокол из таблицы есть?Условие этой функции не выполненоUSB?Режим IPP over USB?Условие этой функции подтвержденоОстальные функции — отдельно

Рис. 7: По порядку: наличие функции, протокол, дополнительное условие подключения. Результат печати на факс и сканирование не переносят.

3.3 Фон — безопасность стека печати

В разборе Microsoft Learn сбои печати составляют 9% случаев MSRC (Microsoft Security Response Center) за три года, которые там свели. Спулер работает с правами SYSTEM, до него широко доходят и стандартные пользователи, сторонний код загружает по требованию. У старых драйверов нет совместимости с современными смягчениями вроде CFG и CET; структуру, где нужно участие всего кода, трудно закрыть смягчением.9

Почему смягчение не работает, пока загружают сторонний драйверСпулер с правами SYSTEM загружает сторонний код; старые драйверы несовместимы со смягчениями вроде CFG и CET, поэтому смягчение, которому нужно участие всех, на спулер не наложить, уязвимости легче эксплуатироватьСпулер — права SYSTEMСторонний код загружают по требованиюСтарые драйверы несовместимы со смягчениемУязвимости легче эксплуатироватьСмягчение (CFG / CET / ACG) не наложить

Рис. 8: Смягчение работает, только когда участвуют все; пока драйвер не убрать, спулер не закрыть.

Где работает сторонний драйвер, меняет настройка изоляции драйвера принтера.11

Режим изоляции Где работает драйвер
Нет (None) В процессе самого спулера
Общая (Shared) Другой процесс, общий с другими драйверами
Отдельная (Isolated) Отдельный процесс только этого драйвера

Драйвер с DriverIsolation=2 в INF по умолчанию берёт общий процесс; без объявления — по умолчанию внутри самого спулера. Администратор может переопределить консолью управления печатью или групповой политикой. Но в любом режиме сторонний код внутри стека печати работает.11 WPP — режим работы, который эту зависимость от стороннего кода снимает.

Как решается процесс, в котором работает сторонний драйверДрайвер с DriverIsolation=2 в INF по умолчанию работает в другом общем процессе, не спулере; без объявления — по умолчанию внутри самого спулера; администратор настройкой или политикой может переопределить на общий, внутрь спулера или отдельный процесс только драйвераДаНетINF объявляет DriverIsolation=2Работает в другом общем процессе (по умолчанию)Работает внутри самого спулера (по умолчанию)Переопределение настройкой или политикой администратораРаботает в отдельном процессе (изоляция)

Рис. 9: Режим изоляции задают объявлением INF и настройкой администратора; старый драйвер без объявления по умолчанию внутри самого спулера.

4. Что исчезает в Windows protected print mode

4.1 WPP — режим работы «только Windows Ready Print»

WPP ввели в Windows 11 24H2. На момент написания статьи по умолчанию выключен; пока выключен, установки драйверов и функций печати не ограничивают.1213 Разделяют способ включения и того, кто может вернуть.

Путь включения Где задают Как вернуть выключенным
Приложение «Параметры» Windows protected print mode в «Принтеры и сканеры» Если включал сам в «Параметрах», сам же там и возвращает
Групповая политика «Конфигурация компьютера > Административные шаблоны > Принтеры > Configure Windows protected print» Политику меняет администратор
Intune OMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint Политику меняет администратор

Если включили групповой политикой, пользователь без обращения к администратору не снимет. OMA-URI Intune — тот же путь политики устройства на ADMX. Вернуть с экрана параметров может сам, только если сам там и включил.14213

Три пути включения Windows protected print modeWindows protected print mode включают приложением Параметры, групповой политикой или OMA-URI Intune; сам пользователь возвращает из Параметров, только если сам там включал; политику групповой политики или Intune без смены на стороне администратора не снятьСам возвращает из ПараметровСам не вернётСам не вернётПриложение Параметры (включает сам)Windows protected print mode включёнГрупповая политикаIntune (OMA-URI)СнятьСнятие — смена политики на стороне администратора

Рис. 10: Путей включения три; сам возвращает, только если включал в «Параметрах».

4.2 Очереди, которые остаются, исчезают и требуют повторной регистрации

Влияние при включении зависит не только от самого принтера, но и от каким драйвером сейчас зарегистрирован.2

Текущее назначение При включении WPP Как готовиться
Физический принтер, зарегистрированный сторонним драйвером (v3/v4) Очередь удаляют, драйвер убирают из хранилища драйверов Совместимый — зарегистрировать заново через Windows Ready Print. Несовместимый — другой путь или не использовать WPP
Принтер с сертификацией Mopria, но зарегистрированный драйвером производителя Один раз удаляют. Сертификация не значит, что существующая очередь останется Сеть — включение и достижимость IPP; USB — режим IPP over USB; затем зарегистрировать заново
Совместимый принтер, уже зарегистрированный Windows Ready Print Продолжает работать Проверить возможности, настройки, фактический вывод
Облачная очередь Universal Print На стороне, совместимой с WPP, как часть Windows Ready Print Проверить зависимость от имени очереди и фактический вывод
Неподдерживаемый программный принтер Удаляют У сторонних PDF-принтеров смотреть поддержку WPP продукта. Сохранение форм — к прямой генерации библиотекой PDF
Виртуальный принтер, уже обновлённый под WPP Не смешивать с несовместимыми продуктами. У OneNote есть Protected virtual printer Проверить, какой именно продукт и очередь используют
Microsoft XPS Document Writer, виртуальный принтер факса Удаляют После возврата WPP выключенным XPS ставят вручную из «Компоненты Windows», факс — из необязательного компонента «Факс и сканирование Windows»
Что происходит с принтером при включении Windows protected print modeПри включении удаляют принтеры, введённые сторонним драйвером, и неподдерживаемые виртуальные принтеры, XPS Document Writer, виртуальный принтер факса; модели с сертификацией Mopria, у которых при сети IPP включён и достижим, при USB — режим IPP over USB, регистрируют заново через Windows Ready Print; несовместимые, пока режим включён, не работаютДаСетьUSBДаДаНетНетНетВключить WPPУдалить принтеры на сторонних драйверахУдалить несовместимые виртуальные принтерыУдалить и XPS Document Writer, и факсЕсть сертификация Mopria?ПодключениеIPP включён и достижим?Режим IPP over USB?Зарегистрировать заново через Windows Ready PrintПока включён — не работать

Рис. 11: Очередь драйвера производителя исчезает один раз даже при сертификации Mopria. Условия повторной регистрации подтверждают отдельно.

Пока WPP включён, удалённые сторонние драйверы не работают. И выключение WPP само не возвращает принтер, заново поставленный Windows Ready Print, на исходный драйвер.210

На стороне приложения объект проверки — обработка, исходящая из бумаги, лотков и собственных функций драйвера производителя, виртуального принтера типа DLL монитора порта, XPS Document Writer. Обработка, которая напрямую порождает файл XPS через XpsDocument и подобное, — не печать в виртуальную очередь XPS Document Writer и не объект этого удаления.

4.3 Меняются и управление, и внутренности спулера

При WPP сторонние двоичные файлы вроде DLL монитора порта не загружают. API загрузки модулей вроде AddPrintProvidorW новые модули не загружают; грузят только двоичные файлы с подписью Microsoft, нужные IPP. AddPrintProvidorW — историческое написание в winspool.h; в разборе Microsoft Learn пишут AddPrintProviderW.9

Из-за этого ограничения рендер XPS идёт не от SYSTEM, а с правами пользователя; у нового рабочего процесса спулера — ограниченный маркер без SeTcbPrivilege и подобного. Порождение дочерних процессов запрещено, CFG, CET, ACG включены.9

Изменения спулера в Windows protected print modeОтказ загружать сторонние двоичные файлы даёт ограничение загрузки модулей, рендер XPS с правами пользователя, рабочий процесс с ограниченным маркером, запрет порождения дочерних, включение CFG, CET, ACGСторонние двоичные файлы не загружаютОграничение загрузкиСжатие правВключение смягченийТолько двоичные файлы с подписью MicrosoftXPS с правами пользователя, ограниченный маркерЗапрет дочерних процессов, CFG / CET / ACG

Рис. 12: Смягчения, которые на рис. 8 не работали, впервые можно включить, убрав сторонние двоичные файлы.

Point and Print: конфигурация IPP остаётся, установку сторонних драйверов больше не делают. Порядок киттинга, исходящий из «подключился к серверу печати — драйвер раздадут», тоже пересматривают.9

Включён ли WPP сейчас, на Windows 11 24H2 и новее смотрят WinRT API Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo.IsProtectedPrintEnabled.15 Значение групповой политики — WindowsProtectedPrintGroupPolicyState под HKLM\Software\Policies\Microsoft\Windows NT\Printers\WPP.13

С клиента с включённым WPP сервер печати с выключенным WPP консолью управления печатью не ведут. Администратору готовят отдельный управляющий клиент с выключенным WPP.14

5. Инвентаризация существующего приложения ── четыре места

Четыре места инвентаризации в бизнес-приложенииВ коде печати бизнес-приложения четыре зависимости — сохранение настроек драйвера, зависимость от имени очереди (включая внутри SDK и библиотек), зависимость от виртуального принтера, который WPP не поддерживает, отправка RAW в очередь, которая при WPP не останется — объект переписывания; код, который только рисует, — объект проверкиКод печати бизнес-приложенияИнвентаризация четырёх зависимостейТолько рисованиеСохранение собственных настроекЗависимость от имени очередиЗависимость от виртуального принтераОтправка RAWВключая внутри SDKТо, что WPP не поддерживаетВ очередь, которая не останетсяПереписыватьПроверять

Рис. 13: Переписывают только четыре зависимости; код, который только рисует, отдают проверке.

5.1 Сначала берут перечень драйверов на месте и решают о назначении

Нужно ли переписывать, решают, посмотрев, что стоит на месте. Перечень очередей и драйверов берут модулем PrintManagement PowerShell. Перечень Get-Printer и Get-PrinterDriver прав администратора не требует; pnputil дальше — требует.1617

# По очередям: имя драйвера, основная версия (3 = v3, 4 = v4), поставщик, имя INF
Get-Printer |
    Select-Object Name, DriverName, PortName,
        @{ Name = "DriverMajorVersion"; Expression = { (Get-PrinterDriver -Name $_.DriverName).MajorVersion } },
        @{ Name = "Manufacturer"; Expression = { (Get-PrinterDriver -Name $_.DriverName).Manufacturer } },
        @{ Name = "InfName"; Expression = { Split-Path -Leaf (Get-PrinterDriver -Name $_.DriverName).InfPath } } |
    Sort-Object DriverName |
    Format-Table -AutoSize

# Только сторонние пакеты драйверов: опубликованное имя (oemN.inf), исходное имя INF, поставщик (нужны права администратора)
pnputil /enum-drivers /class Printer

По MajorVersion отличают v3 и v4.18 Но различие v3/v4 и различие поставляемый/сторонний — разное. Классифицируют так.

Класс Как отличить Что подтвердить дальше
Очередь IPP class driver DriverName — Microsoft IPP Class Driver Сертификация Mopria, включение и достижимость IPP в сети, режим IPP over USB на USB. По одному имени WPP-совместимость не решать
Очередь Universal Print Пользуется поставляемым Universal Print Class Driver8 Как сторона, совместимая с WPP; проверить зависимость приложения от имени очереди и вывод
Очередь другого поставляемого драйвера Не известное имя class driver и не в перечне сторонних пакетов XPS и факс — объект удаления. Generic / Text Only и подобные не считать «останутся». Microsoft Print to PDF в перечне удаления не назван — решать по очереди
Очередь драйвера производителя Имя INF и поставщика сверить с перечнем сторонних пакетов pnputil Кандидат смены драйвера. При WPP существующая очередь исчезает — подтвердить, можно ли физическое устройство зарегистрировать заново

InfPath у Get-PrinterDriver — путь к INF в хранилище драйверов; опубликованное oemN.inf не гарантируют. Сверяют опубликованное имя, исходное имя INF и поставщика pnputil /enum-drivers с именем файла InfPath и Manufacturer. pnputil /enum-drivers перечисляет только сторонние пакеты; поставляемые в перечень не попадают.1917

Порядок инвентаризации перечня принтеров на местеPowerShell берёт перечень очередей и драйверов; по DriverName и сверке Manufacturer с перечнем сторонних пакетов pnputil делят на очередь IPP class driver, очередь Universal Print (совместима с WPP), очередь другого поставляемого драйвера (XPS и факс удаляют, Generic / Text Only нельзя считать что останется, Microsoft Print to PDF в перечне удаления не назван — решать отдельно), очередь драйвера производителя (кандидат смены); у IPP class driver отдельно подтверждают Mopria, при сети — достижимость IPP, при USB — режим IPP over USB, затем обе очереди сверяют с очередями, на которые смотрят настройки и код печати приложения, и раскладывают по таблице решенийIPP ClassUniversal Print ClassДругой поставляемыйПроизводителяВзять перечень Get-Printer / Get-PrinterDriverDriverName и поставщикОчередь IPP class driverОчередь Universal PrintОстанется ли — по таблице главы 4 отдельноКандидат сменыПодтвердить Mopria, IPP, USBСверить с настройками и кодом приложенияРазложить по таблице решений

Рис. 14: До разделения по имени прав администратора не нужно; сверка поставщика — права администратора у pnputil.

Этот перечень сверяют с очередями, на которые смотрят настройки приложения, код печати и используемый SDK. По каждой поставке записывают драйвер, сертификацию Mopria, способ подключения, достижимость IPP, режим USB — тогда решают по таблице главы 4.

Если при WPP назначение не остаётся и зарегистрировать заново нельзя, раньше инвентаризации кода готовят другой путь главы 6 или решают WPP не использовать. Если WPP не используют, но устройство может попасть под смену ранга IPP, дальше подтверждают с 5.2. Если WPP не используют и смены драйвера тоже нет — решение оставить нынешний путь.

Имя драйвера из приложения читают в WPF через PrintQueue.QueueDriver.Name пространства System.Printing.20

using System.Printing;

// Из средства управления или настольного приложения перечислить имя драйвера каждой очереди
using var server = new LocalPrintServer();
foreach (PrintQueue queue in server.GetPrintQueues(
    new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }))
{
    Console.WriteLine($"{queue.Name}\t{queue.QueueDriver?.Name}\t{queue.QueuePort?.Name}");
}

Но пространство имён System.Printing внутри службы Windows не поддерживается. Если печатает резидентная служба, эту диагностику кладут на сторону средства управления.21 Ограничения печати из службы — в Как создать и эксплуатировать службу Windows — от выбора между Планировщиком заданий и службой до превращения BackgroundService в службу и главе 7 предыдущей статьи.

5.2 Проверка 1: не сохраняют и не восстанавливают ли настройки драйвера

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

Что сохраняют Типичная реализация Почему ломается при смене драйвера
Закрытая часть DEVMODE Целиком сохраняют результат DocumentProperties или буфер GetHdevmode и возвращают SetHdevmode Закрытые данные толкует только этот драйвер
Весь PrinterSettings .NET Framework После диалога печати объект сериализуют двоично Внутри может сохраниться и закрытая область скопированного драйвера
Значения открытых свойств PaperSize, PaperSource, PrinterResolution, Duplex сохраняют своим форматом Не закрытый буфер, а смысл номера своей бумаги и лотка меняется
PrintTicket с частным расширением Сохраняют XML с собственным пространством имён производителя Собственное расширение зависит от исходного драйвера и модели

У DEVMODE за открытыми членами могут лежать закрытые данные, размер которых показывает dmDriverExtra. Windows проверяет только открытую часть; испорченные закрытые данные могут уронить драйвер в процессе приложения или спулера.22

Открытая и закрытая части DEVMODEСтруктура DEVMODE за открытыми членами держит закрытые данные драйвера, которые показывает dmDriverExtra; открытую часть проверяет Windows, закрытую толкует только этот драйвер, поэтому сохранение целиком при смене драйвера теряет смыслСтруктура DEVMODEОткрытая часть (dmSize)Закрытая часть (dmDriverExtra)Проверяет WindowsТолкует только этот драйверПри смене драйвера смысл пропадает

Рис. 15: Из сохранённых целиком настроек ломается закрытая часть.

PrinterSettings, принявший настройки через SetHdevmode, копирует эту закрытую область внутрь.23 У PrinterSettings версии .NET Framework есть атрибут Serializable; двоичная сериализация по умолчанию включает и закрытые поля, поэтому в сохранении объекта целиком та же зависимость может прятаться.2425

У PrinterSettings версии .NET атрибута Serializable нет; реализация, которая открытые свойства сохраняет по одному своим форматом, нативный буфер DEVMODE и область dmDriverExtra не сохраняет.24 Здесь смотрят значения, зависящие от драйвера.

Сохранение DEVMODE и сохранение управляемых значений ломаются по-разномуРеализация, которая сохраняет буфер DEVMODE целиком, и реализация, которая сериализует целиком PrinterSettings после SetHdevmode с закрытой областью, носят закрытую часть и при смене драйвера теряют смысл; реализация, которая сохраняет значения открытых свойств, носит номера Custom и бумаги и лотков производителя относительно перечня драйвера производителя, и IPP class driver не обязан толковать их так же; обе заменяют дизайном «сохранять только намерение»Сохранить DEVMODE целикомНосят вместе с закрытой частьюСохранить целиком после SetHdevmodeПри смене драйвера смысл пропадаетСохранить значения открытых свойствНосят номера своей бумаги и лоткаНет гарантии того же смысла у нового драйвераОбе — к сохранению только намерения

Рис. 16: Сохранение объекта целиком после SetHdevmode входит в сторону закрытой части; ломается иначе, но обе носят состояние драйвера.

Если RawKind означает стандартные PaperKind или PaperSourceKind, смысл при смене драйвера сохраняется. Нет гарантии, что Custom и номер производителя у другого драйвера указывают на ту же бумагу и лоток. Стандартные значения оптом «сломаются» не считают.2627

Что из сохранённых значений бумаги и лотка ломаетсяСреди RawKind значения, соответствующие стандартной бумаге вроде A4 (PaperKind) и стандартным источникам вроде Upper и Lower (PaperSourceKind), смысл при смене драйвера сохраняют; Custom и значения производителя — номера относительно перечня драйвера производителя, IPP class driver не обязан толковать их как ту же бумагу и лотокСохранённый RawKindСтандартные значения (PaperKind и т. п.)Custom и значения производителяСмысл при смене драйвера сохраняетсяНет гарантии толкования как той же бумаги и лотка

Рис. 17: Ломается не стандартное значение, а свой номер относительно перечня драйвера производителя.

У PrintTicket открытые ключевые слова определены в пространстве имён psk, но можно включить частные расширения устройства. Элементы третьей стороны по правилу кладут в пространство имён, явно связанное с этой третьей стороной. Если в сохранённом XML смешано пространство имён производителя — подтверждают как настройку драйвера.2829

Мера: сохраняют только «намерение»

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

В WPF возможности берут PrintQueue.GetPrintCapabilities, требование делают PrintTicket и передают в MergeAndValidatePrintTicket.30 Важно: неподдерживаемое требование не обязательно даёт ошибку. Драйвер может разрешить конфликт и обычно вернуть действительный билет, подставив значение по умолчанию.

Если ValidationResult.ConflictStatusConflictResolved, двустороннюю печать и лоток ValidatedPrintTicket сравнивают с требованием, разницу пишут в журнал и сообщают пользователю.31

Дизайн «сохранять только намерение и сразу перед печатью сверить с возможностями»В файле настроек только намерение бумаги, ориентации, двусторонней печати, числа копий, лотка открытыми ключевыми словами; сразу перед печатью GetPrintCapabilities берёт возможности текущего принтера, пропускают через MergeAndValidatePrintTicket; при ConflictStatus NoConflict печатают как есть, при ConflictResolved подменённые пункты сверяют с требованием и отдают в журнал и уведомлениеNoConflictConflictResolvedФайл настроек: только намерение (бумага, ориентация, двусторонняя, копии)Сразу перед печатью GetPrintCapabilitiesMergeAndValidatePrintTicketConflictStatusПечатьРазницу с требованием — в журнал и уведомление

Рис. 18: Намерение настроек сохраняют и при печати проверяют текущими возможностями. Подменённые настройки молча не используют — смотрят разницу.

В WinForms бумагу из PrinterSettings.PaperSizes выбирают заново не по имени, а по Kind и размерам. Источник PaperSources при однозначном стандартном значении вроде Upper и Lower можно использовать снова, но несколько своих лотков часто возвращают одним PaperSourceKind.Custom. К тому же у PaperSource нет размера бумаги. Свой лоток одним Kind не опознают: явно переназначают на текущие возможности или дают пользователю выбрать заново.27

5.3 Проверка 2: нет ли зависимости от имени принтера и очереди

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

Смотрят три места: файл настроек, имя, вписанное в код, внутри SDK и библиотеки форм. Даже без фиксированного имени в своём коде SDK производителя внутри может вызывать конкретную очередь или драйвер. Сверяют документацию SDK с перечнем 5.1.

Три места, где прячется зависимость от имени очередиЗависимость от имени очереди прячется в фиксированном имени файла настроек, фиксированном имени в коде и очереди или драйвере, которые внутри вызывает SDK производителя или библиотека форм; первые два находят поиском по коду и настройкам, последнее — документацией SDK и перечнем 5.1Зависимость от имени очередиФиксированное имя в файле настроекФиксированное имя, вписанное в кодФиксация внутри SDK и библиотекиНайти поиском по коду и настройкамПодтвердить документацией SDK и перечнем 5.1

Рис. 19: Даже без имени очереди в своём коде зависимость может остаться внутри SDK и библиотеки.

Мера: при запуске проверяют, есть ли заданное имя в PrinterSettings.InstalledPrinters; если нет — пишут журнал и сообщают пользователю. С экрана настроек назначение печати тоже дают выбрать заново.

На принтер по умолчанию молча не переходят. Иначе аварию «накладная вышла из принтера другого отдела» прячут как нормальную печать.

Проверка имени принтера при запускеПри запуске проверяют, есть ли имя принтера из файла настроек в InstalledPrinters; если есть — печатают; если нет — пишут журнал, сообщают пользователю и дают выбрать заново; на принтер по умолчанию молча не переходятДаНетНельзяПри запуске: имя принтера из настроекЕсть в InstalledPrinters?Печать в эту очередьЖурнал и уведомление пользователюВыбрать заново на экране настроекМолча перейти на принтер по умолчанию

Рис. 20: Реализация, которая при отсутствии молча печатает на другой принтер, даёт аварию, которую находят позже всех.

5.4 Проверка 3: не используют ли виртуальный принтер для порождения файла

Архив форм, который печатает на сторонний PDF-принтер и следит за папкой вывода, и обработка, которая делает промежуточный файл XPS Document Writer, останавливаются, когда используемую очередь WPP удаляет.

Но удаляют программные принтеры, которые WPP не поддерживает. Не смешивать несовместимые продукты типа DLL монитора порта и продукты, уже обновлённые под WPP, вроде OneNote. На шаге 3 главы 7 подтверждают, объект ли удаления фактически используемая очередь.2

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

5.5 Проверка 4: не идёт ли отправка RAW через очередь, которая при WPP исчезает

Отправка RAW — способ гнать данные языка принтера через спулер: OpenPrinterStartDocPrinter (тип данных «RAW») → WritePrinterEndDocPrinter. Сторона документа должна полностью описать настройки печати языком оборудования; настройки DEVMODE не используют.3233

У этикеток и чеков это классика, но отправка RAW — не «прямое общение в обход спулера». Даже если драйвер по сути — проход к порту, исчезновение этой очереди при WPP забирает проход.

Путь отправки RAW и место, которое исчезает при WPPПриложение через OpenPrinter, StartDocPrinter, WritePrinter гонит данные языка принтера в спулер; очередь, которая при WPP не останется (очередь драйвера производителя и т. п.), служит проходом к порту и принтеру, поэтому при WPP исчезновение очереди забирает проходОчередь исчезаетПриложение: StartDocPrinter (RAW), WritePrinterСпулерОчередь, которая при WPP не останется (проход)ПортПринтер этикеток и чековВключение WPP

Рис. 21: Отправка RAW драйвер использует только как проход, но сам проход исчезает.

Подтверждают, в какую комбинацию очереди, драйвера и порта шлют. Не только очередь драйвера производителя: поставляемые драйверы для физических принтеров кроме IPP class driver вроде Generic / Text Only тоже нельзя считать, что останутся. Что в перечне удаления главы 7 подтвердили как исчезающее, так же нуждается в другом пути.13

И что собственный PDL RAW-ом пройдёт в очередь IPP class driver, в Microsoft Learn не написано. Зависит от PDL, который принимает реализация IPP на стороне принтера; «заменим на IPP — те же RAW-данные пройдут» не решают.

6. Лазейка для принтеров этикеток и чеков

Для этикеток и чеков KomuraSoft советует иметь хотя бы один путь вывода без зависимости от спулера.

Даже при исключении подписи главы 2 продолжение поставки драйвера производителя и использование под WPP не гарантируют.1 В разборе неисправностей Microsoft есть случай, когда после обновления 2021 USB-принтеры чеков и этикеток перестали печатать и это сняли Known Issue Rollback.34 Готовность — знать пути вывода раздельно.

Путь Зависимость от спулера Куда подходит и оговорки
SDK производителя, который общается с устройством напрямую по TCP/USB/последовательному порту Нет Модели, чей SDK производитель долго сопровождает. Следят за разрядностью SDK, зависимой средой выполнения, обновлением подписи
SDK производителя, который внутри вызывает очередь и драйвер Windows Да Даже как существующий актив останавливается, если внутренняя очередь исчезает при WPP. Лазейкой вне спулера не становится
Прямая отправка языка принтера сокетом TCP Нет Сетевые принтеры этикеток. Проектируют обрыв, повтор, таймаут
Прямая отправка последовательным портом (виртуальный COM) / USB Нет Принтеры чеков и устройства рядом с измерительным прибором. Предпосылка — выбор виртуального COM, HID, WinUSB
Печать через IPP class driver (IPP / IPP over USB) Да. При выполнении условий совместимо с WPP Подтверждают сертификацию Mopria, включение и достижимость IPP в сети, режим USB. Путь не выходит за спулер

В проектирование повторного TCP берут образ мысли ловушек приложений последовательной связи. Выбор способа USB — в как обращаться с USB-устройствами в Windows-приложении. IPP у части принтеров по умолчанию выключен, нужно включать.4

Одного имени SDK мало, чтобы решить, независимый ли путь. Документация SDK и перечень 5.1: общается ли с устройством напрямую или в конце вызывает очередь Windows.

Если пользуются очередью Windows, Universal Print на стороне, совместимой с WPP, но тоже идёт через спулер. Очереди не IPP class driver и не Universal Print при стороннем драйвере, XPS и факсе при WPP останавливаются; поставляемые очереди вроде Microsoft Print to PDF, не названные в перечне удаления, решают отдельно. «Совместимо с WPP» и «без зависимости от спулера» — разные классы.

Поток решения, зависит ли путь вывода от спулераЕсли кандидат пути шлёт в очередь печати Windows: очередь IPP class driver при сертификации Mopria и, в сети, достижимости включённого IPP, на USB — режиме IPP over USB, и очередь Universal Print как часть Windows Ready Print зависят от спулера, но совместимы с WPP; модели без Mopria, очереди сторонних драйверов и очереди вроде XPS Document Writer и факса, которые таблица главы 4 удаляет, при WPP могут остановиться; поставляемые очереди вроде Microsoft Print to PDF, не названные в перечне удаления, решают отдельно как в 5.1. Если в очередь не шлют: SDK, который внутри вызывает очередь или драйвер, возвращается к тому же решению; SDK, который не вызывает, и путь прямой отправки на устройство — лазейка без зависимости от спулераДаДаДаДаНетНетНетДаНетДа (сторонний драйвер, XPS, факс)Нет (Print to PDF и т. п.)НетДаДаНетНетКандидат пути выводаШлёт в очередь печати Windows?Очередь IPP class driver?Есть сертификация Mopria?IPP достижим? (USB — over USB)Зависит, но совместимо с WPPЗависит, при WPP может остановитьсяОчередь Universal Print?Таблица главы 4 удаляет?Решать отдельно (5.1)Через SDK производителя?Внутри вызывает очередь или драйвер?Проверка: документ SDK и перечень 5.1Лазейка без зависимости

Рис. 22: Решает, через какую очередь в конце; кроме очереди IPP class driver принтера с сертификацией Mopria и очереди Universal Print, кроме поставляемых очередей, не названных в перечне удаления, при WPP могут остановиться.

7. Порядок проверки ── когда WPP используют и когда нет

Сначала ветвь проверки: WPP используют или нет. В обоих случаях оставляют вывод до изменения и подтверждают на фактически используемых назначениях.

Порядок проверки печати, разделённый по использованию WPPНа проверочной машине воспроизводят все очереди и сохраняют вывод до изменения; если WPP используют — включают, записывают удалённые очереди, сравнивают вывод после повторной регистрации совместимых и подтверждают другой путь несовместимых; если не используют — физические устройства смены ранга IPP повторно обнаруживают при выключенном режиме и сравнивают вывод, остальные печатают на фактической очередиДаНетДаНетВоспроизвести все очереди и записатьСохранить результат печати до измененияWPP используют?Включить и записать удалённые очередиСовместимые при необходимости зарегистрировать зановоСравнить той же печатью, что до измененияНесовместимые — другим путёмФизическое устройство смены ранга IPP?При выключенном удалить и повторно обнаружитьПечать на фактической очередиЗаписать результат и восстановить проверочную машину

Рис. 23: Вывод до изменения — общая база; включают только среду, где WPP используют. Где не используют — подтверждают смену ранга IPP и печать на фактической очереди.

7.1 Общая подготовка: не на боевом ПК, а на проверочной машине воспроизвести все назначения

Проверяют на ПК Windows 11 24H2 и новее, не на боевом ПК. При сетевом подключении можно проверить на ВМ, которая достигает того же принтера. Повторную регистрацию USB и прямое общение, кроме ВМ с пробросом того же USB, оценивают на физической проверочной машине.

Независимо от использования WPP шагами 1 и 2 оставляют состояние до изменения.

  1. Воспроизвести все очереди, которыми приложение пользуется на месте. Не только физические принтеры драйвера производителя: сторонние виртуальные PDF-принтеры и поставляемые очереди вроде Generic / Text Only ставят той же конфигурацией. Имя и версию драйвера записывают сценарием 5.1. По разнице удаления судят только очереди, которые есть на проверочной машине.
  2. Прогнать функции печати и сохранить вывод. Экран настроек бумаги, лотка, двусторонней печати, числа копий; печать по формам; вывод PDF; печать этикеток — база для сравнения.
Очереди, которые воспроизводят на проверочной машинеИз очередей, которыми пользуется приложение по инвентаризации 5.1, на проверочной машине той же конфигурацией, что на месте, воспроизводят физические принтеры драйвера производителя, виртуальные принтеры вроде стороннего PDF, поставляемые очереди вроде Generic / Text Only; перечень удаления шага 3 судит только очереди, которые есть на проверочной машинеИнвентаризация 5.1: очереди приложенияФизический принтер (производителя)Виртуальный принтер (сторонний PDF и т. п.)Поставляемый драйвер (Generic / Text Only и т. п.)Воспроизвести той же конфигурацией на проверочной машинеПо перечню удаления шага 3 решить, останется лиЧего нет, в разнице удаления не появится

Рис. 24: Очереди, которой нет на проверочной машине, в разнице удаления не будет — сначала воспроизводят все очереди инвентаризации.

7.2 Среда, где WPP используют: включить и проверить и исчезнувшие назначения

После шагов 1 и 2 идут так.

  1. Включить WPP и записать удаляемые очереди. В «Принтеры и сканеры» приложения «Параметры» пункт «Настройка» Windows protected print mode показывает объекты удаления в диалоге.2 При включении групповой политикой диалога нет: сохраняют результат Get-Printer до применения, после применения перезагружают проверочную машину. После подтверждения включения IsProtectedPrintEnabled или экраном параметров снова берут перечень и записывают разницу.14
  2. Совместимые удалённые принтеры поставить заново. Входят через Windows Ready Print и сценарием 5.1 подтверждают, что DriverName физического принтера стал Microsoft IPP Class Driver.
  3. Повторить ту же печать и сравнить с выводом до изменения. Выбор экрана настроек, восстановление сохранённых настроек, потерю назначения из-за смены имени очереди. Поля, шрифты, линии вывода сверяют с выводом шага 2.
  4. Несовместимые печатают другим путём главы 6. Воспроизводят состояние «принтера нет в списке» и подтверждают, что вывод идёт. Объект проверки — не только исправленный код, но и приготовленный путь.

7.3 Среда, где WPP не используют: не включать, проверить смену выбора драйвера

В среде, где решили WPP не использовать, шаги 3 и 4 не делают. Включение WPP удаляет очереди целиком, и влияние одного ранжирования уже не видно.

Назначение Что делать после шагов 1 и 2
Физическое IPP-устройство, объект смены ранга При выключенном WPP на проверочной машине удалить, повторно обнаружить, поставить заново. Сценарием 5.1 подтвердить переход на IPP class driver и сравнить шагом 5
Облачная и виртуальная очередь Физического устройства для повторного обнаружения и смены ранга нет — подтвердить вывод шага 2 на фактически используемой очереди

7.4 После проверки восстановить и выстроить порядок киттинга

Проверочную машину, где WPP включали локальным приложением «Параметры», возвращают «выключить». Политику групповой политики или Intune меняет сторона администратора — порядок восстановления готовят под путь включения.213

Выключение WPP само не возвращает принтер, заново поставленный Windows Ready Print. Несовместимые ставят вручную заново.210

В киттинг в механизм раздачи из От групповой политики к Intune — руководство по миграции для малого и среднего бизнеса встраивают политику WPP и порядок повторной регистрации принтеров. Раздача сторонних драйверов Point and Print с KB5005652 2021 по умолчанию требует учётных данных администратора,34 при WPP самой раздачи нет.9 В среде с WPP порядок, зависящий от раздачи драйверов, заменяют этим применением политики и повторной регистрацией.

Пересмотр порядка киттингаПорядок, который раздавал сторонние драйверы Point and Print, с 2021 требует учётных данных администратора, при WPP самой раздачи нет — его убирают; вместо этого в механизм раздачи встраивают политику WPP (групповая политика или OMA-URI) и порядок повторной регистрации принтеровРаздавать сторонние драйверы Point and PrintС 2021 нужны учётные данные администратораПри WPP самой раздачи нетУбрать из порядкаВстроить политику WPP и порядок повторной регистрации

Рис. 25: Порядок раздачи драйверов сменяется порядком раздачи политики WPP и повторной регистрации принтеров.

8. Итог

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

Результат проверки Ответ
При WPP очередь не остаётся, физический принтер зарегистрировать заново нельзя Сначала готовят другой путь или решают WPP не использовать
Сохраняют настройки драйвера Сохраняют не состояние, а намерение; сразу перед печатью подтверждают возможности
Зависят от имени очереди или виртуального принтера Готовят проверку существования назначения, журнал, уведомление, выбор заново. PDF порождают напрямую библиотекой
Проход отправки RAW при WPP исчезает Готовят путь без зависимости от спулера
Назначение обеспечено, рисуют без зависимости от конкретного драйвера Не переписывать оптом — проверить фактическим выводом

Одной правки мало. После настроек продолжают очередь, виртуальный принтер, отправку RAW и в конце главой 7 подтверждают вывод. На устройствах, где WPP не используют, но смена ранга IPP возможна, нужны инвентаризация зависимостей и проверка повторным обнаружением при выключенном WPP.

Дерево решения: переписывать или только проверитьСначала решают, останется ли очередь назначения при WPP (облачная очередь Universal Print, виртуальный принтер с поддержкой WPP) или физический принтер можно зарегистрировать заново через Windows Ready Print; если нет — другой путь или не использовать WPP; если устройство умеет IPP и может смениться ранжированием — по порядку сохранение настроек драйвера, зависимость от имени очереди и виртуального принтера (включая внутри SDK и библиотек), отправка RAW; при совпадении правят и идут дальше; в конце среда с WPP — проверка включением главы 7, без WPP физическое IPP — повторное обнаружение при выключенном, облачные и виртуальные очереди — фактический вывод; без WPP и без влияния смены оставляют нынешний путьНетГотовить другой путьWPP не использоватьДаНетДаНетДаДаНетДаНетДаНетДаНетДаНетОчередь при WPP останется или зарегистрировать заново?Что делатьIPP и может смениться?IPP и может смениться?Сохраняют настройки драйвера?Только проверить (глава 7)Оставить нынешний путьПравить (5.2)Зависят от имени очереди или виртуального принтера?Включая зависимость внутри SDK и библиотекиПравить (5.3, 5.4)Шлют RAW в очередь, которая при WPP не останется?Готовить проход (глава 6)WPP используют?Физическое IPP-устройство?Проверка повторным обнаружением без WPP (7.3)Подтвердить вывод на фактической очереди

Рис. 26: Сначала решают, останется ли очередь при WPP; зависимость кода правят по одной и идут к следующей проверке; исправленный путь в конце тоже проверяют. Без WPP не включают WPP главы 7: физическое IPP — повторное обнаружение при выключенном, облачные и виртуальные очереди — фактический вывод.

Срок готовности кладут не на дату Microsoft, а на свой план развёртывания

WPP в будущем станет включён по умолчанию, но срок не указан.10 Срок готовности — до включения WPP у себя или до развёртывания на месте обновления функций Windows 11 24H2 и новее. 1 июля 2027 — веха стороны поставки драйверов, не крайний срок стороны бизнес-приложения.1

Куда класть срок готовности стороны бизнес-приложенияСейчас берут перечень и инвентаризируют; смену пути и проверку заканчивают до своего срока — до включения WPP у себя или до развёртывания обновления функций 24H2 и новее; остановка обновлений драйверов 1 июля 2027 — веха стороны поставки, не срок готовности; состояние, на которое не повлияет включение WPP по умолчанию с неизвестной датой, делают заранееВеха стороны поставки, не срокСейчас: перечень и инвентаризацияСмена пути и проверкаСрок: до включения WPP у себя / до развёртывания обновления функцийВключение WPP по умолчанию (срок неизвестен) уже не заденет1 июля 2027: остановка обновлений драйверов

Рис. 27: Срок кладут на свой план развёртывания, веху Microsoft крайним сроком не делают.

Начинают с перечня на стороне поставки и понимания зависимостей настроек, назначения и пути вывода. PDF порождают напрямую; у этикеток и чеков есть один путь вне стека печати. Затем печать подтверждают под фактическими условиями развёртывания.

Среды, оставшиеся на Windows 10, вне этого плана, но поддержка обычного канала Windows 10 (22H2) кончилась в октябре 2025. У Enterprise LTSC и IoT Enterprise LTSC сроки по редакциям разные — смотрят жизненный цикл. Решение с ESU и LTSC — в реальных вариантах после окончания поддержки Windows 10, промышленные ПК — в какой Windows ставить на промышленный ПК. Готовность печати — до повторной проверки главы 7 на Windows 11, куда переходят.

Похожие статьи

Смежные области консультирования

Компания KomuraSoft LLC занимается инвентаризацией зависимости бизнес-приложений с печатью форм и этикеток от драйвера принтера, пересмотром пути печати (прямая генерация PDF, прямое управление принтером этикеток), проектированием плана проверки исходя из Windows protected print mode.

Справочные ссылки

  1. Microsoft Learn, End of servicing plan for third-party printer drivers on Windows. Временная линия обновления мая 2025 (15 января 2026, 1 июля 2026, 1 июля 2027); объект — Windows 11 и новее и Windows Server 2025 и новее; существующие драйверы можно ставить, плана отключать функции v3/v4 нет; три условия исключения подписи (без сертификации Mopria, верхняя граница Windows 10 и ниже, машинный ARM64); USB-устройства каждую функцию используют только в режиме IPP over USB; с Windows 10 21H2 поставляется Microsoft IPP Class Driver.  2 3 4 5 6 7 8 9 10

  2. Microsoft Learn, Overview of Windows protected print mode. О том, что при включении принтеры на сторонних драйверах удаляют и убирают из хранилища драйверов; принтер с сертификацией Mopria, введённый сторонним драйвером, нужно ставить заново; удаляют неподдерживаемые программные принтеры (OneNote (Desktop) и т. п.), XPS, факс; при включении групповой политикой пользователь не снимет; порядок включения и выключения из приложения «Параметры».  2 3 4 5 6 7 8

  3. Microsoft Learn, Step 2: A Driver Package for the Device is Selected. О том, что при нескольких подходящих пакетах драйверов Windows ставит каждому ранг и ставит с лучшим рангом; при равном ранге выбирают по дате и версии. 

  4. Microsoft Learn, IPP printers with the Universal Print Connector. Microsoft IPP Class Driver — поставляемый драйвер, который общается с принтерами с сертификацией Mopria по IPP; у части принтеров IPP по умолчанию выключен и его нужно включать.  2

  5. Microsoft Learn, Legacy printer driver submission process. О том, что с 15 января 2026 подачу драйверов принтера независимо от WHQL и Attestation по умолчанию блокируют; ручной разбор — с документом обоснования. 

  6. Microsoft Learn, Windows Print Path Overview. О двух основных путях печати Windows: путь GDI и путь XPS. 

  7. Microsoft Learn, Discover Windows Ready Print. О том, что Windows Ready Print — имя, включающее IPP, eSCL, Universal Print; сторонний драйвер не нужен; спроектирован для принтеров с сертификацией Mopria; не зависит от архитектуры ПК. 

  8. Microsoft Learn, Universal Print troubleshooting - Understanding the stages of a print job. Принтер Universal Print пользуется поставляемым Universal Print class driver; спулер шлёт задание в службу IPP over HTTPS.  2 3

  9. Microsoft Learn, More information on Windows protected print mode for enterprises and developers. Сбои печати — 9% сообщений MSRC за три года; спулер работает как SYSTEM и загружает сторонний код; старые драйверы несовместимы с CFG/CET/ACG; IPP на HTTP POST, опознают URI, немногие PDL вроде PWG Raster и PDF рендерят на клиенте; при WPP ограничение загрузки модулей, рендер XPS с правами пользователя, ограниченный маркер, запрет порождения дочерних, смягчение двоичных файлов; Point and Print сторонние драйверы больше не ставит.  2 3 4 5 6

  10. Microsoft Learn, Windows protected print mode FAQ. О том, что несовместимый принтер пока включён заново не поставить, после выключения ставят вручную; собственные функции дают Print Support App; Windows protected print mode в будущий момент станет включён по умолчанию.  2 3 4

  11. Microsoft Learn, Printer driver isolation. Смысл режимов изоляции (Shared / Isolated / None); драйвер без ключевого слова DriverIsolation в INF по умолчанию работает в процессе спулера; администратор может переопределить настройку каждого драйвера консолью управления печатью или функциями спулера.  2

  12. Microsoft Learn, What’s new in Windows 11, version 24H2. О том, что Windows protected print mode добавлен в 24H2 и включается приложением «Параметры» или групповой политикой. 

  13. Microsoft Learn, Policy CSP - Printers: ConfigureWindowsProtectedPrint. ОС применения — Windows 11 24H2 и новее; по умолчанию выключен, драйверы и функции печати не ограничивают; соответствующий ключ реестра ADMX Software\Policies\Microsoft\Windows NT\Printers\WPP и значение WindowsProtectedPrintGroupPolicyState 2 3 4 5

  14. Microsoft Learn, Windows protected print mode for enterprises. Порядок включения групповой политикой «Configure Windows protected print»; OMA-URI Intune; с клиента с включённым WPP сервер с выключенным WPP консолью управления печатью не ведут.  2 3

  15. Microsoft Learn, WindowsProtectedPrintInfo.IsProtectedPrintEnabled Property. Статическое свойство, введённое в Windows 11 24H2, которое возвращает, включён ли WPP на текущем устройстве. 

  16. Microsoft Learn, Get-PrinterDriver. Возвращает перечень драйверов принтера указанного компьютера; учётные данные администратора не нужны. 

  17. Microsoft Learn, PnPUtil Command Syntax. /enum-drivers перечисляет сторонние пакеты драйверов; с Windows 11 21H2 /class сужает по имени класса; запускают от администратора в командной строке.  2

  18. Microsoft Learn, How to display printer status in a UWP device app. Порядок отличить v3 и v4 через get-printer | Select Name, {(get-printerdriver -Name $_.DriverName).MajorVersion}

  19. Microsoft Learn, PnPUtil. При перечислении пакетов хранилища драйверов поставляемые (in-box) пакеты не входят; перечисляют только пакеты кроме поставляемых. 

  20. Microsoft Learn, PrintQueue.QueueDriver Property. Драйвер принтера, которым пользуется очередь, получают как PrintDriver

  21. Microsoft Learn, PrintServer Class. Классы пространства имён System.Printing внутри служб Windows и приложений ASP.NET не поддерживаются и могут дать падение производительности или исключение во время выполнения. 

  22. Microsoft Learn, DEVMODEW structure (wingdi.h). Сразу за открытыми членами можно положить закрытые члены драйвера; размер показывает dmDriverExtra; Windows проверяет только открытую часть; испорченные закрытые данные могут уронить драйвер. 

  23. dotnet/winforms (GitHub), PrinterSettings.cs. SetHdevmode копирует внутрь закрытую область на dmDriverExtra, GetHdevmode её записывает обратно; другими путями закрытой области нет. 

  24. Microsoft Learn, PrinterSettings Class. В объявлении версии .NET Framework есть атрибут Serializable, в версии .NET нет; GetHdevmode и SetHdevmode взаимно преобразуют с DEVMODE 2

  25. Microsoft Learn, SerializableAttribute Class. У типа с атрибутом Serializable по умолчанию сериализуются все поля, закрытые и открытые; исключают атрибутом NonSerialized

  26. Microsoft Learn, PaperSize.RawKind Property. RawKind — целое, означающее значение стандартного вида бумаги или своё значение. 

  27. Microsoft Learn, PaperSourceKind Enum. Кроме стандартных видов источника вроде Upper и Lower определён Custom для источника, свойственного принтеру.  2

  28. Microsoft Learn, Print Schema. Print Schema допускает расширения третьей стороны; частный элемент Property должен принадлежать пространству имён, явно связанному с этой третьей стороной. 

  29. Microsoft Learn, Print Schema-Related Technologies. PrintTicket — преемник DEVMODE; PrintTicket устройства может включать частные расширения конкретной модели. 

  30. Microsoft Learn, How to: Validate and Merge PrintTickets. Порядок подтвердить возможности принтера PrintQueue.GetPrintCapabilities и слить и проверить требование в действительный PrintTicket принтера через MergeAndValidatePrintTicket

  31. Microsoft Learn, ConflictStatus Enum. MergeAndValidatePrintTicket может дать драйверу подменить неподдерживаемые настройки и вернуть действительный билет; подмену сообщает ConflictResolved у ValidationResult.ConflictStatus

  32. Microsoft Learn, WritePrinter function. Порядок от StartDocPrinter до EndDocPrinter; при типе данных «RAW» документ языком оборудования должен полностью описать настройки, равносильные DEVMODE; WritePrinter — блокирующая функция, вызов с потока UI может выглядеть как «не отвечает». 

  33. Microsoft Learn, RAW data type. Данные RAW без дальнейшей обработки идут на монитор печати; пример — файл из команд PCL. 

  34. Microsoft Learn, Printing issue troubleshooting guidance. Смена поведения Point and Print по умолчанию с KB5005652 требует учётных данных администратора; после обновления 2021 USB-принтеры чеков и этикеток перестали печатать, сняли Known Issue Rollback.  2

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

Тёмный режим и темы контрастности в приложениях Windows ── тёмная панель заголовка DWM, следование системной теме в WinForms/WPF, отрисовка при высокой контрастности

Как заставить приложения WinForms и WPF следовать тёмному режиму и темам контрастности Windows 11. Тёмная панель заголовка DWM, SetColorM...

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

Частые вопросы

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

Работающие сейчас принтеры и приложения внезапно перестанут печатать после июля 2026 или июля 2027?
Нет. План Microsoft прямо описан как поэтапное прекращение со стороны поставки: «новые сторонние драйверы не класть в Windows Update», «ранжированием предпочитать IPP class driver», «обновления не принимать» — не как отключение существующих драйверов. Существующие драйверы по-прежнему ставят установщиком производителя. Опасно, когда IPP class driver подходит к устройству и при замене ПК или переустановке ОС драйвер сам сменяется на IPP class driver, и когда включают Windows protected print mode.
Windows protected print mode по умолчанию включён?
На момент написания статьи (сентябрь 2026) по умолчанию выключен; включают в приложении «Параметры», групповой политикой или Intune. Но FAQ Microsoft прямо говорит: «в будущий момент станет включён по умолчанию». Срок не указан, поэтому готовность — заранее сделать состояние, в котором включение не остановит работу.
Что будет с принтерами этикеток и чеков?
Принтеры без сертификации Mopria названы среди условий, при которых после 15 января 2026 подпись драйвера ещё могут признать как исключение. То есть драйвер производителя пока может остаться, но в среде с включённым Windows protected print mode принтеры на сторонних драйверах удаляют, как есть не поработают. Путь через SDK производителя, который общается с устройством напрямую по TCP/USB/последовательном порту, или прямая отправка языка принтера отвязывает от изменений спулера. SDK, который внутри вызывает очередь или драйвер Windows, при исчезновении стороннего драйвера остановится так же и лазейкой не станет.
Код печати приложения можно оставить на PrintDocument?
Пути печати GDI и XPS остаются; Microsoft прямо говорит, что отключать функции драйверов v3/v4 не планирует. Приложение, которое только рисует через PrintDocument или FixedDocument, — объект проверки, не переписывания. Переписывать — код, который сохраняет и восстанавливает настройки драйвера (закрытую часть DEVMODE или частное пространство имён PrintTicket), зависит от конкретного имени очереди или виртуального принтера (включая то, что внутри вызывает SDK производителя или библиотека форм), и гонит RAW через спулер в очередь, которая при WPP не останется (очередь драйвера производителя и т. п.). Но если сам принтер назначения нельзя зарегистрировать заново через Windows Ready Print, даже при одном рисовании под Windows protected print mode очередь исчезнет целиком — сначала готовят другой путь.
С чего начинать?
С перечня принтеров и драйверов на стороне поставки. Get-Printer и Get-PrinterDriver PowerShell без прав администратора показывают, какая очередь каким драйвером пользуется (v3 или v4, IPP class driver). Затем сверяют очереди, к которым приложение обращается по имени, сохраняет настройки или шлёт RAW, и по таблице решений статьи раскладывают на «как есть», «проверить», «сменить путь».

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

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

Публичные ссылки

Вернуться в блог