Fin del mantenimiento de los controladores de impresora de Windows — Cómo deben preparar las aplicaciones empresariales la impresión de informes y etiquetas
· Actualizado el: · Go Komura · Windows, Desarrollo de Windows, Windows 11, C#, .NET, WinForms, WPF, Impresión, Informes, Controlador de impresora, IPP, Operaciones, Consultoría técnica
Historial de revisiones (primera versión, publicada el 1 Sep 2026)
- Primera publicación
«Cambiamos el PC y las opciones de papel y bandeja son distintas, aunque es la misma impresora.» «Los ajustes de impresión guardados no vuelven.» «La impresora de etiquetas ha desaparecido de la lista.» Prepararse para el fin del mantenimiento de los controladores de impresora es asegurarse de que cambios como estos no detengan la actividad.
Lo primero que hay que entender es que el plan de fin de mantenimiento de los controladores y habilitar Windows protected print mode son dos cosas distintas. La impresión existente no se detiene de golpe en el momento en que pasan las fechas del plan. En cambio, cuando cambia la forma de elegir un controlador, o cuando se habilita Windows protected print mode, se pierden los ajustes y los destinos de impresión de los que dependía la aplicación.12
Este artículo se dirige a los desarrolladores que mantienen aplicaciones empresariales de Windows en WinForms, WPF y similares, y a los administradores que implementan impresoras. Recorre qué cambia, qué hay que investigar, qué hay que corregir y cómo verificar, en ese orden. Para cómo elegir una API de impresión o un método de salida PDF de partida, véase el artículo anterior, Impresión y salida en PDF en aplicaciones empresariales de Windows.
El entorno de partida es Windows 11 (24H2 o posterior para probar WPP), PowerShell 5.1 o posterior (módulo PrintManagement) y C# (.NET 6 o posterior, o .NET Framework 4.x; System.Drawing.Printing / System.Printing). La dificultad es intermedia.
1. Primero la conclusión
En lugar de reescribir todo el código de impresión de un golpe, confirme primero si el destino de impresión sobrevive y después corrija los puntos que dependen del controlador.
El orden de las decisiones tiene tres etapas.
| Orden | Qué comprobar | Siguiente acción |
|---|---|---|
| 1. Comprobar el destino de impresión | ¿La cola sobrevive a WPP? ¿Se puede volver a registrar la impresora física con Windows Ready Print? | Si no sobrevive, primero o bien proporcionar otra ruta de salida o decidir no usar WPP |
| 2. Comprobar las dependencias de la aplicación | ¿Depende de ajustes específicos del controlador, nombres de cola, impresoras virtuales o envío RAW? | Corregir los puntos que apliquen. Incluir las dependencias internas de SDK y bibliotecas de informes |
| 3. Confirmar con la salida real | ¿Sigue pudiendo producir informes, PDF y etiquetas de forma correcta cuando cambia el controlador o la cola? | Los entornos que usan WPP verifican con él habilitado; los que no lo usan verifican con otro procedimiento |
Si la aplicación solo dibuja con PrintDocument o FixedDocument, es en principio un objeto de verificación, no de reescritura. Sin embargo, si la cola de destino desaparece bajo WPP y no se puede volver a registrar, la impresión falla aunque el código de dibujo esté bien. Primero hace falta otra ruta.
Si quiere empezar por el trabajo en sí, avance en este orden: tomar la lista en 5.1 → juzgar el destino de impresión con las tablas del capítulo 4 y 5.1 → comprobar las dependencias de 5.2 a 5.5 → elegir una ruta en el capítulo 6 → verificar en el capítulo 7. Los capítulos 2 a 4 explican el contexto de los puntos en los que la decisión no es obvia.
A partir de aquí, Windows protected print mode se abrevia WPP. Una «cola» es un destino de impresión registrado en Windows, y el «spooler» es el mecanismo que recibe los trabajos de impresión y los entrega al destino de salida.
En el diagrama, una línea continua marca una relación que siempre se cumple y una línea discontinua una relación condicional (las condiciones están en la explicación de cada relación en la página de detalle). La lista completa de relaciones (39 en total, con evidencia y grado de certeza) y las definiciones de los conceptos principales están reunidas en la página de detalle del mapa de conocimiento (en japonés). Datos: JSON-LD / Turtle
2. Qué se decidió — Una cronología en tres etapas
2.1 Lo que termina es la oferta y las actualizaciones, no un apagado general de los controladores existentes
La fuente primaria es «End of servicing plan for third-party printer drivers on Windows» en Microsoft Learn. El plan se anunció en septiembre de 2023 y sus fechas se revisaron en mayo de 2025. En el momento de redactar este artículo, el plan es el siguiente.1
| Fecha | Qué cambia | A qué deben prestar atención las aplicaciones empresariales |
|---|---|---|
| 15 de enero de 2026 | En Windows 11 y posteriores y Windows Server 2025 y posteriores, los controladores de impresora nuevos ya no se publican en Windows Update. Las actualizaciones de los controladores existentes siguen siendo posibles mediante revisión caso por caso | Al implementar PC e impresoras nuevos, un controlador del fabricante puede dejar de obtenerse del mismo modo que antes |
| 1 de julio de 2026 | La clasificación de controladores de impresora cambia para preferir siempre el controlador de clase IPP incluido con Windows | En los dispositivos a los que también coincide el controlador de clase IPP, puede elegirse un controlador distinto al cambiar un PC o al volver a detectar una impresora |
| 1 de julio de 2027 | Salvo correcciones de seguridad, ya no se aceptan actualizaciones de controladores de impresora de terceros | No confunda la fecha en que se detienen las actualizaciones con el plazo de la preparación del lado de la aplicación |
Los controladores existentes se pueden seguir instalando desde Windows Update y desde los instaladores que proporciona el fabricante, y Microsoft indica que no tiene planes de desactivar la funcionalidad de los controladores v3/v4. En otras palabras, esto es un plan para retirar de forma gradual la oferta y la actualización de controladores, no un plan para desactivar ese día los controladores ya instalados en los PC en producción.1
flowchart TB
accTitle: Qué cambia y qué no cambia con el fin del mantenimiento de los controladores
accDescr: El fin del mantenimiento de los controladores de impresora por sí solo no cambia ni el punto de entrada de la API de dibujo de la aplicación ni los controladores existentes; solo cuando se elige un controlador distinto en una instalación nueva o en una nueva detección se sustituyen la lista de papeles, las funciones propietarias y el nombre de cola que devolvía el controlador, y los cambios causados por habilitar Windows protected print mode, incluida la eliminación de impresoras virtuales, son un mecanismo distinto tratado en el capítulo 4
eos["Fin del mantenimiento de los controladores de impresora"]
eos --> keep["Qué no cambia"]
eos --> cond["Cuando se elige un controlador distinto en una instalación nueva o en una nueva detección"]
cond --> change["Qué se sustituye"]
keep --> api["Punto de entrada de la API de dibujo"]
keep --> drv["Controladores existentes"]
change --> caps["Papel, bandejas, funciones propietarias"]
change --> qname["Nombre de cola"]
Figura 1: el fin del mantenimiento por sí solo no cambia nada; cuando se elige un controlador distinto, se sustituyen la información y los nombres que proporcionaba el controlador. Los cambios causados por habilitar WPP, incluida la eliminación de impresoras virtuales, son un mecanismo distinto (capítulo 4).
2.2 Los controladores cambian en el terreno sobre todo en dos situaciones
Aunque el plan no detiene los controladores existentes, el entorno que ve la aplicación cambia en las situaciones siguientes.
| Situación | Qué ocurre |
|---|---|
| Sustitución de PC, reinstalación del sistema operativo, nueva detección de impresora | Si el controlador de clase IPP también coincide con el dispositivo, la clasificación elige un controlador distinto al de antes |
| Habilitación de WPP | Se eliminan las impresoras sobre controladores de terceros. Los modelos compatibles se vuelven a registrar con Windows Ready Print; los modelos incompatibles ya no se pueden usar tal cual |
Cuando varios paquetes de controladores coinciden con el mismo dispositivo, Windows asigna a cada uno un rango y selecciona el mejor. El cambio del 1 de julio de 2026 hace que esta selección prefiera el controlador de clase IPP. En los dispositivos para los que el controlador de clase IPP no es candidato, el paquete del fabricante puede seguir eligiéndose.31
flowchart TB
accTitle: Dos caminos por los que los controladores se sustituyen en el terreno
accDescr: En los dispositivos a los que coincide el controlador de clase IPP, la clasificación selecciona el controlador de clase IPP al sustituir un PC, reinstalar el sistema operativo o volver a detectar una impresora y el controlador se sustituye; cuando se habilita Windows protected print mode, se eliminan las impresoras sobre controladores de terceros, el controlador se sustituye en los modelos que se pueden volver a registrar con Windows Ready Print, y el destino de impresión se pierde en los modelos que no se pueden
site["PC en el terreno"]
site --> r1["Sustitución de PC, reinstalación del sistema operativo, nueva detección"]
site --> r2["Windows protected print mode habilitado"]
r1 --> rank["Preferido en los dispositivos a los que coincide el controlador de clase IPP"]
r2 --> del["Impresoras sobre controladores de terceros eliminadas"]
rank --> swap["El controlador se sustituye"]
del --> re{"¿Se puede volver a registrar con Ready Print?"}
re -->|"Sí"| swap
re -->|"No"| lost["El destino de impresión se pierde"]
Figura 2: mantener separados el plan de fin de mantenimiento y WPP permite distinguir las situaciones en las que cambia el controlador de aquellas en las que se pierde el destino de impresión en sí.
También es importante aquí no tratar la compatibilidad IPP y la certificación Mopria como la misma condición.
| Condición | Qué decide principalmente |
|---|---|
| El controlador de clase IPP coincide con el dispositivo | Si el cambio de clasificación puede sustituir el controlador |
| Certificada Mopria y, en conexiones de red, IPP está habilitado y es accesible, y en conexiones USB el dispositivo está en modo IPP over USB | Si la impresora física se puede volver a registrar como Windows Ready Print bajo WPP |
En un dispositivo que admite IPP sin certificación Mopria, el cambio de clasificación puede sustituir el controlador aunque no use WPP. A la inversa, un nombre de controlador «Microsoft IPP Class Driver» por sí solo no confirma que la impresora se pueda usar bajo WPP.14
flowchart TB
accTitle: La coincidencia del controlador de clase IPP y la certificación Mopria son condiciones distintas
accDescr: Si la impresora admite IPP, el cambio de clasificación puede seleccionar el controlador de clase IPP y sustituir el controlador, mientras que la certificación Mopria es una condición distinta que decide si la impresora se puede volver a registrar bajo Windows protected print mode, exigiendo que IPP esté habilitado y sea accesible en dispositivos de red y el modo IPP over USB en dispositivos USB
printer["Impresora"]
printer --> q1{"¿Admite IPP?"}
q1 -->|"Sí"| rank["Se puede sustituir"]
q1 -->|"No"| keep["Sigue en el controlador del fabricante"]
printer --> q2{"¿Certificada Mopria?"}
q2 -->|"No"| ng["No se puede volver a registrar bajo WPP"]
q2 -->|"Sí"| q3{"¿Conexión USB?"}
q3 -->|"No"| q5{"¿IPP habilitado y accesible?"}
q5 -->|"Sí"| ok["Se puede volver a registrar bajo WPP"]
q5 -->|"No"| ng
q3 -->|"Sí"| q4{"¿Modo IPP over USB?"}
q4 -->|"Sí"| ok
q4 -->|"No"| ng
Figura 3: el efecto de la clasificación lo decide la compatibilidad IPP; si la impresora sobrevive bajo WPP lo deciden la certificación Mopria más IPP habilitado y accesible (modo IPP over USB en conexiones USB).
2.3 La firma de controladores tiene excepciones, pero la continuidad no está garantizada
Después del 15 de enero de 2026, los controladores que cumplan cualquiera de las condiciones siguientes pueden presentar una excepción de firma para revisión caso por caso.1
- Para impresoras que no pueden obtener la certificación Mopria.
- Paquetes cuyo sistema operativo de destino más alto es Windows 10 o anterior.
- Controladores ARM64 nativos.
Los envíos están bloqueados de forma predeterminada tanto para WHQL como para Attestation, y pasan a ser una revisión manual con un documento de justificación adjunto. Aunque se cumplan las condiciones, no hay garantía de que el fabricante presente ni de que Microsoft apruebe.5 Además, poder obtener un controlador firmado y poder usarlo en un entorno con WPP habilitado son dos cosas distintas. La preparación para impresoras de etiquetas y de recibos se trata en el capítulo 6.
flowchart TB
accTitle: Condiciones en las que la firma de controladores sigue permitida después del 15 de enero de 2026
accDescr: Los envíos de controladores de los fabricantes están bloqueados de forma predeterminada, y solo los que cumplen una de tres condiciones, impresoras que no pueden obtener la certificación Mopria, paquetes cuyo destino más alto es Windows 10 o anterior, y controladores ARM64 nativos, pueden presentar una excepción para revisión caso por caso, que puede llevar a la aprobación pero no garantiza la firma
submit["Envío de controlador del fabricante"]
submit --> block["Bloqueado de forma predeterminada"]
block --> c1["Modelo que no puede obtener la certificación Mopria"]
block --> c2["Windows 10 o anterior como destino más alto"]
block --> c3["ARM64 nativo"]
c1 --> apply["Se puede solicitar una excepción"]
c2 --> apply
c3 --> apply
apply --> review["Revisión caso por caso"]
review --> maybe["Puede aprobarse (sin garantía)"]
Figura 4: cumplir las condiciones solo lleva el controlador a la revisión; que se firme no está garantizado.
3. Cómo funciona — La ruta tradicional de controlador y Windows Ready Print
3.1 Lo que cambia es la ruta de impresión más allá de la API de dibujo
En la impresión tradicional de Windows, la aplicación emite órdenes de dibujo GDI o XPS, el spooler recibe el trabajo y el controlador de impresora lo convierte al lenguaje de la impresora (PDL) y lo envía. Tanto la ruta de impresión GDI como la ruta de impresión XPS se asientan sobre esta estructura.6
flowchart TB
accTitle: La ruta tradicional de controlador
accDescr: El spooler que se ejecuta como SYSTEM pone en cola las órdenes de dibujo GDI o XPS de la aplicación empresarial, y un controlador v3 o v4 de terceros las convierte en un PDL propietario y las envía a la impresora, en el propio proceso del spooler sin aislamiento de controlador, o en un proceso separado del spooler en modo compartido o aislado
app["Aplicación empresarial (GDI / XPS)"] --> spooler["Spooler (privilegios SYSTEM)"]
spooler --> iso{"Aislamiento de controlador"}
iso -->|"Ninguno"| inproc["Controlador de terceros en el proceso del spooler"]
iso -->|"Shared / Isolated"| host["Controlador de terceros en un proceso separado"]
inproc --> pdl["Convertir a PDL propietario"]
host --> pdl
pdl --> printer["Impresora"]
Figura 5: en la ruta tradicional el proceso difiere con el aislamiento, pero la estructura en la que código de terceros dentro de la pila de impresión se encarga de la conversión a PDL es la misma.
Su sucesor es Windows Ready Print. Es el nombre colectivo de la impresión por IPP (Internet Printing Protocol), el escaneo por eSCL y Universal Print, y no requiere un controlador de terceros. Está pensado para impresoras certificadas Mopria, y la independencia de la arquitectura de CPU es otra ventaja.7
Windows 10 21H2 y posteriores incluyen el Microsoft IPP Class Driver, que atiende impresoras conformes con Mopria tanto por red como por USB.1 Las colas en la nube de Universal Print usan el Universal Print Class Driver incluido.8
flowchart TB
accTitle: La ruta de Windows Ready Print
accDescr: El spooler recibe las órdenes de dibujo de la aplicación empresarial, y o bien el Microsoft IPP Class Driver incluido renderiza a PWG Raster o PDF en el cliente y lo envía por IPP a una impresora certificada Mopria, o bien el Universal Print Class Driver incluido lo envía por IPP over HTTPS al servicio Universal Print; Windows protected print mode solo permite esta ruta de Windows Ready Print
app["Aplicación empresarial (GDI / XPS)"] --> spooler["Spooler"]
spooler --> ipp["Microsoft IPP Class Driver"]
ipp --> render["Renderizar a PWG Raster / PDF"]
render --> printer["Impresora certificada Mopria (IPP)"]
spooler --> up["Universal Print Class Driver"]
up --> cloud["Servicio Universal Print (IPP over HTTPS)"]
wpp["Windows protected print mode"] -.->|"solo permite la ruta Ready Print"| ipp
wpp -.-> up
Figura 6: Windows Ready Print también pasa por el spooler. Lo que cambia es que la conversión y el envío pasan de un controlador de terceros a los controladores de clase incluidos.
IPP es un protocolo basado en HTTP e identifica una impresora por un URI como ipps://printer.example.com/ipp/print. Los PDL usados para la impresión sin controlador se limitan a unos pocos formatos basados en normas públicas, como PWG Raster y PDF, y el documento final se renderiza en el lado del cliente.9 Con Universal Print, el spooler envía el trabajo al servicio por IPP over HTTPS.8
El punto de entrada visto desde la aplicación no cambia. Una aplicación que dibuja con GDI o XPS llama a las mismas API. Lo que cambia es el mecanismo de más allá que devuelve la lista de tamaños de papel y bandejas, proporciona funciones propietarias y convierte a PDL. Por eso las aplicaciones que dependen de la información que devuelve un controlador o de ajustes propietarios se ven más afectadas que las que solo dibujan. Para las funciones específicas del fabricante, compruebe también si se proporcionan a través de una Print Support App (PSA).10
3.2 Comprobar por separado impresión, fax y escaneo en dispositivos multifunción
Que un dispositivo pueda pasar a Windows Ready Print depende de que el dispositivo tenga esa función e implemente el protocolo correspondiente.1
| Función | Compatibilidad necesaria para una conexión de red | Condición adicional para una conexión USB |
|---|---|---|
| Impresión | IPP | Modo IPP over USB |
| Envío de fax | IPP Fax Out | Modo IPP over USB |
| Escaneo | eSCL o WS-Scan | Modo IPP over USB |
No concluya, solo por la compatibilidad de impresión Mopria, que el fax y el escaneo también pueden migrar.
flowchart TB
accTitle: Orden para comprobar por separado cada función de un dispositivo multifunción
accDescr: Tome las funciones que usa una a una, compruebe en orden que el dispositivo tiene la función, que admite el protocolo de la tabla y que está en modo IPP over USB cuando la conexión es USB, y compruebe las funciones restantes por separado en lugar de reutilizar el resultado de impresión para fax o escaneo
start["Elegir una función que se usa"]
start --> feature{"¿El dispositivo tiene la función?"}
feature -->|"Sí"| protocol{"¿Admite el protocolo de la tabla?"}
feature -->|"No"| unmet["Condición de esta función no cumplida"]
protocol -->|"Sí"| usb{"¿Conexión USB?"}
protocol -->|"No"| unmet
usb -->|"Sí"| mode{"¿Modo IPP over USB?"}
usb -->|"No"| checked["Condición de esta función comprobada"]
mode -->|"Sí"| checked
mode -->|"No"| unmet
checked --> next["Comprobar las funciones restantes por separado"]
unmet --> next
Figura 7: compruebe en el orden de disponibilidad de la función, protocolo admitido y condición adicional según el tipo de conexión. No reutilice el resultado de impresión para fax o escaneo.
3.3 El trasfondo es la seguridad de la pila de impresión
Según la explicación de Microsoft Learn, los errores relacionados con la impresión representaron el 9 % de los casos del MSRC (Microsoft Security Response Center) que contabilizó en los tres años anteriores. El spooler se ejecuta con privilegios SYSTEM, es ampliamente accesible desde usuarios estándar y carga código de terceros bajo demanda. Algunos controladores antiguos son incompatibles con mitigaciones modernas como CFG y CET, lo que dificulta aplicar mitigaciones que exigen que cada pieza de código participante las admita.9
flowchart TB
accTitle: Por qué las mitigaciones no pueden surtir efecto mientras se cargan controladores de terceros
accDescr: El spooler que se ejecuta como SYSTEM carga código de terceros, y porque los controladores antiguos son incompatibles con mitigaciones como CFG y CET, las mitigaciones que exigen que cada participante las admita no se pueden aplicar al spooler, lo que facilita explotar las vulnerabilidades
sys["El spooler se ejecuta como SYSTEM"]
load["Carga código de terceros bajo demanda"]
old["Los controladores antiguos son incompatibles con las mitigaciones"]
sys --> risk["Las vulnerabilidades son más fáciles de explotar"]
load --> nomit["Las mitigaciones (CFG / CET / ACG) no se pueden aplicar"]
old --> nomit
nomit --> risk
Figura 8: las mitigaciones solo surten efecto cuando todos los participantes las admiten, así que el spooler no se puede proteger por completo mientras no se eliminen los controladores.
Dónde se ejecuta un controlador de terceros depende del ajuste de aislamiento de controladores de impresora.11
| Modo de aislamiento | Dónde se ejecuta el controlador |
|---|---|
| None | En el propio proceso del spooler |
| Shared | En un proceso separado del spooler, compartido con otros controladores |
| Isolated | En un proceso separado dedicado a ese controlador |
Un controlador que declara DriverIsolation=2 en su INF usa de forma predeterminada el proceso compartido, y un controlador que no lo declara se ejecuta de forma predeterminada en el proceso del spooler. Los administradores pueden invalidarlo desde la consola Administración de impresión o Directiva de grupo. En todos los modos, sin embargo, el código de terceros sigue ejecutándose dentro de la pila de impresión.11 WPP es el modo de funcionamiento que elimina esta dependencia del código de terceros.
flowchart TB
accTitle: Cómo se decide el proceso en el que se ejecuta un controlador de terceros
accDescr: Un controlador que declara DriverIsolation=2 en su INF se ejecuta de forma predeterminada en un proceso compartido separado del spooler, un controlador sin la declaración se ejecuta de forma predeterminada en el proceso del spooler, y los administradores pueden invalidarlo desde la consola Administración de impresión o Directiva de grupo a compartido, en el proceso del spooler o un proceso dedicado separado (aislado)
inf{"El INF declara DriverIsolation=2"}
inf -->|"Sí"| shared["Se ejecuta en un proceso compartido separado (predeterminado)"]
inf -->|"No"| inproc["Se ejecuta en el proceso del spooler (predeterminado)"]
admin["Invalidado por ajustes o directiva del administrador"] -.-> shared
admin -.-> inproc
admin -.-> isolated["Se ejecuta en un proceso dedicado separado (aislado)"]
Figura 9: el modo de aislamiento lo deciden la declaración INF y los ajustes del administrador; los controladores antiguos sin la declaración se ejecutan de forma predeterminada en el proceso del spooler.
4. Qué desaparece bajo Windows protected print mode
4.1 WPP es un modo de funcionamiento que «usa solo Windows Ready Print»
WPP se introdujo en Windows 11 24H2. En el momento de redactar este artículo está deshabilitado de forma predeterminada, y mientras está deshabilitado no impone restricciones a la instalación de controladores ni a las funciones de impresión.1213 Distinga la forma de habilitarlo y quién puede volver a desactivarlo.
| Ruta de habilitación | Dónde se configura | Cómo volver a desactivarlo |
|---|---|---|
| Aplicación Configuración | Windows protected print mode en «Impresoras y escáneres» | Si el usuario lo habilitó en la aplicación Configuración, el usuario puede desactivarlo en la aplicación Configuración |
| Directiva de grupo | «Configuración del equipo > Plantillas administrativas > Impresoras > Configure Windows protected print» | Un administrador cambia la directiva |
| Intune | OMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint |
Un administrador cambia la directiva |
Cuando se habilita mediante Directiva de grupo, el usuario no puede desactivarlo sin ponerse en contacto con un administrador. El OMA-URI de Intune es otra ruta que aplica la misma directiva de dispositivo respaldada por ADMX. Parta de que el usuario solo puede desactivarlo desde la pantalla Configuración cuando el usuario lo habilitó desde la pantalla Configuración.14213
flowchart TB
accTitle: Tres rutas para habilitar Windows protected print mode
accDescr: Windows protected print mode se puede habilitar desde la aplicación Configuración, Directiva de grupo o un OMA-URI de Intune; el usuario solo puede desactivarlo en la aplicación Configuración cuando el usuario lo habilitó allí, y cuando se distribuyó por Directiva de grupo o una directiva de Intune no se puede desactivar sin que el administrador cambie la directiva
s["Aplicación Configuración (habilitado por el usuario)"] --> wpp["Windows protected print mode habilitado"]
g["Directiva de grupo"] --> wpp
i["Intune (OMA-URI)"] --> wpp
s -.->|"el usuario puede desactivarlo en la aplicación Configuración"| off["Desactivado"]
g -.->|"el usuario no puede desactivarlo"| adm["Desactivarlo exige un cambio de directiva del administrador"]
i -.->|"el usuario no puede desactivarlo"| adm
Figura 10: hay tres rutas de habilitación, y el usuario solo puede desactivarlo cuando el usuario lo habilitó desde la aplicación Configuración.
4.2 Colas que sobreviven, colas que desaparecen y colas que hay que volver a registrar
El efecto en el momento de habilitarlo depende no solo de la impresora en sí, sino también de con qué controlador está registrada actualmente.2
| Destino de impresión actual | Cuando se habilita WPP | Cómo prepararse |
|---|---|---|
| Impresora física registrada con un controlador de terceros (v3/v4) | La cola se desinstala y el controlador también se elimina del almacén de controladores | Volver a registrar los modelos compatibles con Windows Ready Print. Para los modelos incompatibles, elegir otra ruta o decidir no usar WPP |
| Impresora registrada con un controlador del fabricante, aunque esté certificada Mopria | Se elimina una vez. La certificación no significa que la cola existente sobreviva | Comprobar la habilitación y la accesibilidad de IPP en conexiones de red, o el modo IPP over USB en USB, y volver a registrar |
| Impresora compatible ya registrada con Windows Ready Print | Sigue funcionando | Verificar capacidades, ajustes y salida real |
| Cola en la nube de Universal Print | Queda del lado compatible con WPP como parte de Windows Ready Print | Comprobar las dependencias del nombre de cola y verificar la salida real |
| Impresora de software no compatible | Eliminada | En impresoras PDF de terceros y similares, comprobar la compatibilidad WPP del producto. Orientar el archivado de informes hacia la generación directa con una biblioteca PDF |
| Impresora virtual actualizada para compatibilidad WPP | No se trata igual que los productos no compatibles. OneNote tiene una Protected virtual printer | Verificar de qué tipo son el producto y la cola en uso |
| Microsoft XPS Document Writer, la impresora virtual de fax | Eliminados | Tras desactivar WPP, reinstalar XPS de forma manual desde «Características de Windows» y el fax desde la característica opcional «Fax y escáner de Windows» |
flowchart TB
accTitle: Qué ocurre con las impresoras cuando se habilita Windows protected print mode
accDescr: Al habilitarlo, se eliminan las impresoras instaladas con controladores de terceros y las impresoras virtuales no compatibles, el XPS Document Writer y la impresora virtual de fax; los modelos certificados Mopria y, en conexiones de red, con IPP habilitado y accesible o, en conexiones USB, en modo IPP over USB se pueden volver a registrar con Windows Ready Print, y los dispositivos no compatibles no se pueden usar mientras está habilitado
on["WPP habilitado"]
on --> third["Impresoras sobre controladores de terceros eliminadas"]
on --> soft["Impresoras virtuales no compatibles eliminadas"]
soft --> xps["XPS Document Writer y fax también eliminados"]
third --> mopria{"¿Certificada Mopria?"}
mopria -->|"Sí"| conn{"Tipo de conexión"}
conn -->|"Red"| ipp{"¿IPP habilitado y accesible?"}
conn -->|"USB"| usb{"¿Modo IPP over USB?"}
ipp -->|"Sí"| re["Volver a registrar con Windows Ready Print"]
usb -->|"Sí"| re
ipp -->|"No"| no["Inutilizable mientras está habilitado"]
usb -->|"No"| no
mopria -->|"No"| no
Figura 11: una cola sobre un controlador del fabricante desaparece una vez aunque la impresora esté certificada Mopria. Compruebe por separado las condiciones de nuevo registro.
Mientras WPP está habilitado, los controladores de terceros eliminados no se pueden usar. Además, desactivar WPP no devuelve automáticamente una impresora reinstalada con Windows Ready Print a su controlador original.210
Del lado de la aplicación, lo que hay que comprobar es el procesamiento que supone los tamaños de papel, las bandejas y las funciones propietarias que devuelve un controlador del fabricante, las impresoras virtuales de tipo DLL de monitor de puerto y el XPS Document Writer. Generar archivos XPS de forma directa con XpsDocument y similares es distinto de imprimir a la cola virtual llamada XPS Document Writer, y no se ve afectado por esta eliminación.
4.3 También cambian la administración y el interior del spooler
Bajo WPP ya no se cargan binarios de terceros como las DLL de monitor de puerto. Las API de carga de módulos como AddPrintProvidorW ya no pueden cargar módulos nuevos, y solo se cargan los binarios firmados por Microsoft necesarios para IPP. AddPrintProvidorW es la grafía histórica en winspool.h; la explicación de Microsoft Learn lo escribe como AddPrintProviderW.9
Esta restricción permite que el renderizado XPS se ejecute con privilegios de usuario en lugar de SYSTEM, y el nuevo proceso de trabajo del spooler usa un token restringido al que se le han quitado privilegios como SeTcbPrivilege. Está prohibida la creación de procesos hijos, y también se habilitan CFG, CET y ACG.9
flowchart TB
accTitle: Cambios del spooler bajo Windows protected print mode
accDescr: Dejar de cargar binarios de terceros hace posible restringir la carga de módulos, renderizar XPS con privilegios de usuario, ejecutar procesos de trabajo con un token restringido, prohibir la creación de procesos hijos y habilitar CFG, CET y ACG
nodrv["No se cargan binarios de terceros"]
nodrv --> r["Carga restringida"]
nodrv --> l["Privilegios reducidos"]
nodrv --> m["Mitigaciones habilitadas"]
r --> r2["Solo binarios firmados por Microsoft"]
l --> l2["XPS con privilegios de usuario, token restringido"]
m --> m2["Sin procesos hijos, CFG / CET / ACG"]
Figura 12: las mitigaciones que no podían surtir efecto en la figura 8 solo se pueden habilitar una vez eliminados los binarios de terceros.
Point and Print conserva su configuración IPP pero ya no instala controladores de terceros. Los procedimientos de aprovisionamiento construidos sobre la hipótesis de que «conectarse al servidor de impresión distribuye el controlador» también hay que revisarlos.9
Si WPP está habilitado en ese momento se puede comprobar con la API WinRT Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo.IsProtectedPrintEnabled en Windows 11 24H2 y posteriores.15 El ajuste de Directiva de grupo es el valor WindowsProtectedPrintGroupPolicyState bajo HKLM\Software\Policies\Microsoft\Windows NT\Printers\WPP.13
Tenga en cuenta que un cliente con WPP habilitado no puede administrar un servidor de impresión con WPP deshabilitado desde Administración de impresión. Proporcione a los administradores un cliente de administración distinto con WPP deshabilitado.14
5. Inventario de las aplicaciones existentes — Los cuatro puntos que hay que mirar
flowchart TB
accTitle: Los cuatro puntos que inventariar en una aplicación empresarial
accDescr: En el código de impresión de una aplicación empresarial, los cuatro puntos, guardar ajustes específicos del controlador, dependencias de nombres de cola (incluidas las de SDK y bibliotecas), dependencias de impresoras virtuales no compatibles con WPP y envío RAW a colas que no sobreviven a WPP, son objetos de reescritura, y el código que solo dibuja es un objeto de verificación
app["Código de impresión de la aplicación empresarial"]
app --> deps["Inventariar las cuatro dependencias"]
app --> d0["Solo dibujo"]
deps --> d1["Guardar ajustes específicos del controlador"]
deps --> d2["Dependencia de nombres de cola"]
deps --> d3["Dependencia de impresoras virtuales"]
deps --> d4["Envío RAW"]
d2 -.-> d2n["Incluidas las de los SDK"]
d3 -.-> d3n["Las que WPP no admite"]
d4 -.-> d4n["A colas que no sobreviven"]
d1 --> fix["Reescribir"]
d2 --> fix
d3 --> fix
d4 --> fix
d0 --> verify["Verificar"]
Figura 13: solo las cuatro dependencias son objetos de reescritura; el código que solo dibuja va a la verificación.
5.1 Primero tome la lista de controladores en el terreno y juzgue el destino de impresión
Si hace falta reescribirlo se decide después de ver qué hay instalado en el terreno. Tome la lista de colas y controladores con el módulo PrintManagement de PowerShell. Listar con Get-Printer y Get-PrinterDriver no requiere derechos de administrador, pero el paso de pnputil de la segunda mitad sí.1617
# Por cada cola, listar el nombre del controlador, la versión principal (3 = v3, 4 = v4), el fabricante y el nombre de archivo 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
# Enumerar solo los paquetes de controladores de terceros, con el nombre publicado (oemN.inf), el nombre INF original y el proveedor (requiere derechos de administrador)
pnputil /enum-drivers /class Printer
MajorVersion distingue v3 de v4.18 Sin embargo, la distinción v3/v4 y la distinción incluido/de terceros son distintas. Clasifique como sigue.
| Categoría | Cómo reconocerlo | Qué comprobar a continuación |
|---|---|---|
| Cola sobre el controlador de clase IPP | DriverName es Microsoft IPP Class Driver |
Certificación Mopria, habilitación y accesibilidad de IPP en la red, modo IPP over USB para USB. No decida la compatibilidad WPP solo por el nombre |
| Cola de Universal Print | Usa el Universal Print Class Driver incluido8 | Tratarla como el lado compatible con WPP y comprobar las dependencias de nombre de cola de la aplicación y la salida |
| Cola sobre otro controlador incluido | Ni un nombre de controlador de clase conocido ni en la lista de paquetes de terceros | XPS y fax se eliminan. No dé por sentado que Generic / Text Only y similares sobreviven. Microsoft Print to PDF no figura en la lista de eliminación, así que juzgue cola por cola |
| Cola sobre un controlador del fabricante | Cruzar el nombre de archivo INF y el proveedor con la lista de paquetes de terceros de pnputil |
Candidata al reemplazo de controlador. Bajo WPP la cola existente desaparece, así que compruebe si el dispositivo físico se puede volver a registrar |
InfPath de Get-PrinterDriver es la ruta al INF dentro del almacén de controladores y no está garantizado que devuelva el nombre publicado oemN.inf. Cruce el nombre publicado, el nombre INF original y el proveedor que devuelve pnputil /enum-drivers con el nombre de archivo de InfPath y Manufacturer. pnputil /enum-drivers solo enumera paquetes de terceros; los paquetes incluidos no aparecen en la lista.1917
flowchart TB
accTitle: Procedimiento para inventariar las impresoras en el terreno
accDescr: Tomar la lista de colas y controladores con PowerShell y, por DriverName y cruzando Manufacturer con la lista de paquetes de terceros de pnputil, dividirlas en colas sobre el controlador de clase IPP, colas de Universal Print (compatibles con WPP), colas sobre otros controladores incluidos (XPS y fax eliminados, Generic / Text Only no se puede dar por sobreviviente, Microsoft Print to PDF no figura en la lista de eliminación así que se juzga de forma individual) y colas sobre controladores del fabricante (candidatas a reemplazo); en las colas sobre el controlador de clase IPP confirmar por separado la certificación Mopria, IPP habilitado y accesible en conexiones de red y el modo IPP over USB en conexiones USB, y después cruzar cada cola con las colas a las que apuntan los ajustes y el código de impresión de la aplicación
list["Tomar la lista con Get-Printer / Get-PrinterDriver"]
list --> cls{"DriverName y proveedor"}
cls -->|"IPP Class"| ipp["Cola sobre el controlador de clase IPP"]
cls -->|"Universal Print Class"| up["Cola de Universal Print"]
cls -->|"Otro incluido"| inbox["Juzgar de forma individual con la tabla del capítulo 4"]
cls -->|"Fabricante"| vendor["Candidata a reemplazo"]
ipp --> mop["Comprobar Mopria, accesibilidad IPP, USB"]
mop --> match["Cruzar con los ajustes y el código de la aplicación"]
up --> match
inbox --> match
vendor --> match
match --> judge["Clasificar con la tabla de decisión"]
Figura 14: tomar la lista y ordenar por nombre no requiere derechos de administrador; cruzar el proveedor requiere derechos de administrador para pnputil.
Cruce esta lista con las colas a las que hacen referencia los ajustes de la aplicación, el código de impresión y los SDK que usa. Si registra el controlador, la certificación Mopria, el tipo de conexión, la accesibilidad IPP y el modo de funcionamiento USB de cada sede del cliente, puede juzgar con la tabla del capítulo 4.
Si el destino de impresión no sobrevive a WPP y no se puede volver a registrar, proporcione la ruta alternativa del capítulo 6 o decida no usar WPP antes de inventariar el código. Si el dispositivo puede verse afectado por el cambio de clasificación IPP aunque no use WPP, continúe a partir de 5.2. Si no usa WPP y el reemplazo de controlador no tiene efecto, la decisión es seguir operando en la ruta actual.
Para comprobar el nombre del controlador desde la aplicación, lea PrintQueue.QueueDriver.Name con System.Printing de WPF.20
using System.Printing;
// Desde una herramienta de administración o una aplicación de escritorio, listar el nombre de controlador de cada cola
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}");
}
Sin embargo, el espacio de nombres System.Printing no admite el uso dentro de un servicio de Windows. Si imprime desde un servicio residente, ponga este diagnóstico en la herramienta de administración.21 Para las restricciones de imprimir desde un servicio, véase Cómo crear y operar un servicio de Windows y el capítulo 7 del artículo anterior.
5.2 Comprobación 1: ¿se guardan y restauran ajustes específicos del controlador?
Lo más difícil de encontrar son los ajustes de impresión guardados. La razón por la que se rompen difiere según cómo se guarden.
| Qué se guarda | Implementación típica | Por qué se rompe cuando cambia el controlador |
|---|---|---|
La parte privada de DEVMODE |
Guardar el resultado de DocumentProperties o el búfer de GetHdevmode entero y restaurar con SetHdevmode |
Los datos privados solo los puede interpretar ese controlador |
Todo el PrinterSettings de .NET Framework |
Serializar en binario el objeto después del cuadro de diálogo de impresión | El área privada del controlador copiada internamente también se puede guardar |
| Valores de propiedades públicas | Guardar PaperSize, PaperSource, PrinterResolution, Duplex y similares en un formato propio |
No es un búfer privado, pero cambia el significado del papel personalizado y de los números de bandeja y similares |
Un PrintTicket con extensiones privadas |
Guardar XML que contiene un espacio de nombres específico del fabricante | Las extensiones propietarias dependen del controlador o del modelo original |
DEVMODE puede llevar datos privados después de sus miembros públicos, cuyo tamaño indica dmDriverExtra. Windows solo valida la parte pública, y datos privados corruptos pueden hacer que el controlador se bloquee en el proceso de la aplicación o del spooler.22
flowchart TB
accTitle: Las partes pública y privada de DEVMODE
accDescr: La estructura DEVMODE lleva después de sus miembros públicos datos privados definidos por el controlador indicados por dmDriverExtra; solo la parte pública la valida Windows y la parte privada solo la puede interpretar ese controlador, de modo que guardarla entera pierde su significado cuando cambia el controlador
dm["Estructura DEVMODE"]
dm --> pub["Parte pública (dmSize)"]
dm --> priv["Parte privada (dmDriverExtra)"]
pub --> chk["Validada por Windows"]
priv --> only["Interpretada solo por ese controlador"]
only --> lost["Pierde su significado cuando cambia el controlador"]
Figura 15: de un ajuste guardado entero, la parte que se rompe es la parte privada.
Un PrinterSettings que recibió sus ajustes a través de SetHdevmode copia esta área privada internamente.23 La versión de .NET Framework de PrinterSettings tiene el atributo Serializable, y la serialización binaria incluye campos privados de forma predeterminada, así que guardar el objeto entero arrastra la misma dependencia.2425
La versión de .NET de PrinterSettings, en cambio, no tiene el atributo Serializable, y una implementación que guarda las propiedades públicas una a una en su propio formato no guarda el búfer nativo DEVMODE ni el área dmDriverExtra.24 A lo que hay que prestar atención en este caso es a los valores dependientes del controlador.
flowchart TB
accTitle: Guardar DEVMODE y guardar valores administrados se rompen de forma distinta
accDescr: Una implementación que guarda el búfer DEVMODE entero y una que serializa un PrinterSettings entero después de recibir el área privada a través de SetHdevmode arrastran la parte privada y pierden su significado cuando cambia el controlador; una implementación que guarda valores de propiedades públicas arrastra números de papel y bandeja Custom o específicos del fabricante que son valores respecto a la lista del controlador del fabricante y no están garantizados de significar lo mismo bajo el controlador de clase IPP; ambas se sustituyen por un diseño que solo guarda la intención
a["Guardar DEVMODE entero"]
a --> a1["Arrastra la parte privada"]
s["Guardar entero después de SetHdevmode"] --> a1
a1 --> a2["Pierde su significado cuando cambia el controlador"]
b["Guardar valores de propiedades públicas"]
b --> b1["Arrastra números de papel y bandeja personalizados"]
b1 --> b2["Sin garantía del mismo significado en el controlador nuevo"]
a2 --> c["Ambas pasan a guardar solo la intención"]
b2 --> c
Figura 16: guardar el objeto entero después de SetHdevmode cae del lado de la parte privada; los modos de fallo difieren, pero ambos arrastran el estado del controlador.
Si RawKind representa un PaperKind o PaperSourceKind estándar, conserva su significado cuando cambia el controlador. Lo que no está garantizado es que Custom o números específicos del fabricante apunten al mismo papel o bandeja en un controlador distinto. No trate los valores estándar como si se rompieran de golpe.2627
flowchart TB
accTitle: Qué valores de papel y bandeja guardados se rompen
accDescr: Entre los valores RawKind, los que corresponden a tamaños de papel estándar (PaperKind) como A4 o orígenes de papel estándar (PaperSourceKind) como Upper y Lower conservan su significado cuando cambia el controlador, mientras que Custom y los valores específicos del fabricante son números respecto a la lista del controlador del fabricante y el controlador de clase IPP no está garantizado de interpretarlos como el mismo papel o bandeja
raw["RawKind guardado"]
raw --> std["Valores estándar (PaperKind etc.)"]
raw --> cus["Custom y valores específicos del fabricante"]
std --> keep["Conserva su significado cuando cambia el controlador"]
cus --> lost["Sin garantía del mismo papel o bandeja"]
Figura 17: lo que se rompe no son los valores estándar, sino los valores personalizados respecto a la lista del controlador del fabricante.
Un PrintTicket también define sus palabras clave públicas en el espacio de nombres psk, pero puede contener extensiones privadas específicas del dispositivo. La regla es que los elementos de terceros pertenecen a un espacio de nombres claramente asociado a ese tercero. Si en el XML guardado aparece un espacio de nombres del fabricante, compruébelo como un ajuste específico del controlador.2829
Remedio: guardar solo la «intención»
Conserve la intención, es decir, la elección de tamaño de papel, orientación, dúplex, copias y bandeja, en su propio archivo de ajustes con palabras clave públicas. En lugar de arrastrar el estado interno del controlador, crúcelo con las capacidades actuales justo antes de imprimir.
En WPF, obtenga las capacidades con PrintQueue.GetPrintCapabilities, exprese la petición como un PrintTicket y páselo a MergeAndValidatePrintTicket.30 A lo que hay que prestar atención aquí es que una petición no admitida no produce necesariamente un error. El controlador puede resolver el conflicto y devolver un ticket válido, normalmente con el ajuste sustituido por un valor predeterminado o similar.
Si ValidationResult.ConflictStatus es ConflictResolved, compare el dúplex y la bandeja de ValidatedPrintTicket con la petición, registre la diferencia y notifique al usuario.31
flowchart TB
accTitle: Un diseño que solo guarda la intención y la cruza con las capacidades justo antes de imprimir
accDescr: El archivo de ajustes solo contiene la intención de papel, orientación, dúplex, copias y bandeja en palabras clave públicas; justo antes de imprimir, obtener las capacidades de la impresora actual con GetPrintCapabilities, pasar por MergeAndValidatePrintTicket, imprimir tal cual si ConflictStatus es NoConflict, y si es ConflictResolved comparar los elementos sustituidos con la petición y enviarlos al registro y a una notificación
cfg["Archivo de ajustes: solo intención (papel, orientación, dúplex, copias)"]
cfg --> caps["GetPrintCapabilities justo antes de imprimir"]
caps --> merge["MergeAndValidatePrintTicket"]
merge --> st{"ConflictStatus"}
st -->|"NoConflict"| print["Imprimir"]
st -->|"ConflictResolved"| tell["Registrar y notificar la diferencia respecto a la petición"]
Figura 18: guarde la intención de los ajustes y valídela frente a las capacidades actuales en el momento de imprimir. No use en silencio un ajuste sustituido; compruebe la diferencia.
En WinForms, vuelva a seleccionar el papel de PrinterSettings.PaperSizes por Kind o por dimensiones en lugar de por nombre. Los orígenes de papel de PaperSources se pueden reutilizar cuando son valores estándar únicos como Upper o Lower, pero varias bandejas propietarias pueden volver agrupadas como PaperSourceKind.Custom. Y PaperSource no lleva dimensiones de papel. No identifique una bandeja propietaria solo por Kind; o bien reasígnela de forma explícita a las capacidades actuales o haga que el usuario elija de nuevo.27
5.3 Comprobación 2: ¿hay una dependencia de nombres de impresora o de cola?
El artículo anterior recomendaba guardar el nombre de impresora en un archivo de ajustes. Lo que se añade aquí es la premisa de que no hay garantía de que se cree una cola con el mismo nombre después de un reemplazo de controlador o una nueva detección. Un ajuste que apunta al nombre de cola antiguo pierde su destino de impresión tal cual.
Los puntos que hay que comprobar son tres: el archivo de ajustes, los nombres codificados en el código y el interior de SDK y bibliotecas de informes. Aunque el código propio no tenga un nombre fijo, un SDK del fabricante puede llamar internamente a una cola o un controlador concretos. Cruce la documentación del SDK con la lista de 5.1.
flowchart TB
accTitle: Tres puntos donde puede ocultarse una dependencia de nombre de cola
accDescr: Una dependencia de nombre de cola puede ocultarse en tres puntos, un nombre fijo en el archivo de ajustes, un nombre fijo codificado en el código, y la cola o el controlador que un SDK del fabricante o una biblioteca de informes llama internamente; los dos primeros se encuentran buscando en el código y los ajustes, el último por la documentación del SDK y la lista de 5.1
dep["Dependencia de nombres de cola"]
dep --> cfg["Nombre fijo en el archivo de ajustes"]
dep --> code["Nombre fijo codificado en el código"]
dep --> sdk["Fijo dentro del SDK o la biblioteca"]
cfg --> grep["Encontrar buscando en el código y los ajustes"]
code --> grep
sdk --> doc["Confirmar con la documentación del SDK y la lista de 5.1"]
Figura 19: aunque el código propio no tenga un nombre de cola, puede quedar una dependencia dentro de un SDK o una biblioteca.
El remedio es comprobar al inicio que el nombre configurado existe en PrinterSettings.InstalledPrinters y, si no se encuentra, registrarlo y notificar al usuario. Haga también posible volver a seleccionar el destino de impresión desde la pantalla de ajustes.
No recurra en silencio a la impresora predeterminada. Eso oculta un albarán que sale de la impresora de otro departamento como una impresión normal.
flowchart TB
accTitle: Validación del nombre de impresora al inicio
accDescr: Al inicio, comprobar si el nombre de impresora del archivo de ajustes existe en InstalledPrinters; si existe, imprimir; si no, registrar, notificar al usuario y hacer que elija de nuevo, y no recurrir en silencio a la impresora predeterminada
start["Inicio: nombre de impresora de los ajustes"]
start --> exists{"¿Existe en InstalledPrinters?"}
exists -->|"Sí"| print["Imprimir a esa cola"]
exists -->|"No"| log["Registrar y notificar al usuario"]
log --> pick["Elegir de nuevo en la pantalla de ajustes"]
exists -.->|"no hacer esto"| silent["Recurrir en silencio a la impresora predeterminada"]
Figura 20: una implementación que imprime en silencio a otra impresora cuando no se encuentra el destino crea el fallo que más tarda en descubrirse.
5.4 Comprobación 3: ¿se usa una impresora virtual para generar archivos?
Un archivo de informes que imprime a una impresora PDF de terceros y vigila la carpeta de salida, o un procesamiento que crea archivos intermedios con el XPS Document Writer, deja de funcionar cuando WPP elimina la cola que usa.
Sin embargo, lo que se elimina son las impresoras de software no compatibles con WPP. No confunda productos no compatibles como los de tipo DLL de monitor de puerto con productos actualizados para compatibilidad WPP, como OneNote. El paso 3 del capítulo 7 confirma si la cola que usa realmente es un objetivo de eliminación.2
Si lo que quiere es un PDF, entonces, como se explica en el capítulo 5 del artículo anterior, pasar a una configuración que lo genera de forma directa con una biblioteca PDF es el diseño menos dependiente de los cambios de la pila de impresión.
5.5 Comprobación 4: ¿el envío RAW pasa por una cola que WPP elimina?
El envío RAW es el método de empujar datos en lenguaje de impresora a través del spooler con OpenPrinter → StartDocPrinter (tipo de datos «RAW») → WritePrinter → EndDocPrinter. El documento debe describir por completo los ajustes de impresión en el lenguaje del hardware, y no se usan los ajustes DEVMODE.3233
Es el enfoque habitual para etiquetas y recibos, pero el envío RAW no es una «comunicación directa que elude el spooler». Aunque el controlador se use de hecho solo como un paso hacia el puerto, ese paso se pierde cuando WPP elimina la cola.
flowchart TB
accTitle: La ruta de envío RAW y dónde la elimina WPP
accDescr: La aplicación empuja datos en lenguaje de impresora al spooler con OpenPrinter, StartDocPrinter y WritePrinter, y una cola que no sobrevive a WPP (por ejemplo una cola sobre un controlador del fabricante) actúa como paso hacia el puerto y luego a la impresora, de modo que cuando WPP elimina esa cola el paso desaparece
app["Aplicación: StartDocPrinter (RAW), WritePrinter"]
app --> spooler["Spooler"]
spooler --> queue["Cola que no sobrevive a WPP (paso)"]
queue --> port["Puerto"]
port --> printer["Impresora de etiquetas o de recibos"]
wpp["WPP habilitado"] -.->|"la cola desaparece"| queue
Figura 21: el envío RAW usa el controlador solo como un paso, pero el paso en sí desaparece.
Lo que hay que comprobar es a qué combinación de cola, controlador y puerto envía. No solo las colas sobre controladores del fabricante, sino también los controladores incluidos para impresoras físicas distintas del controlador de clase IPP, como Generic / Text Only, no se pueden dar por sobrevivientes. Todo lo que se confirme como desaparecido en la lista de eliminación del capítulo 7 necesita otra ruta del mismo modo.13
Además, Microsoft Learn no indica que se pueda enviar un PDL propietario en RAW a una cola sobre el controlador de clase IPP. Como depende de los PDL que acepte la implementación IPP de la impresora, no concluya que «pasar a IPP deja pasar los mismos datos RAW».
6. Una vía de escape para impresoras de etiquetas y de recibos
KomuraSoft recomienda tener al menos una ruta de salida para etiquetas y recibos que no dependa del spooler.
Aunque una impresora entre en la excepción de firma del capítulo 2, no están garantizados el suministro continuado del controlador del fabricante ni su uso bajo WPP.1 La guía de solución de problemas de Microsoft también registra un caso en el que impresoras de recibos y de etiquetas conectadas por USB dejaron de imprimir tras una actualización de 2021 y el problema se resolvió con un Known Issue Rollback.34 Conocer las rutas de salida por separado es la preparación.
| Ruta | Depende del spooler | Situaciones adecuadas y precauciones |
|---|---|---|
| SDK del fabricante que habla con el dispositivo directamente por TCP, USB o serie | No | Para modelos cuyo fabricante mantiene el SDK a largo plazo. Seguir la bitness del SDK, los runtimes dependientes y las actualizaciones de firma |
| SDK del fabricante que internamente llama a una cola o un controlador de Windows | Sí | Aunque se conserve como un activo existente, se detiene cuando WPP elimina la cola interna. No es una vía de escape independiente del spooler |
| Enviar el lenguaje de impresora de forma directa por un socket TCP | No | Para impresoras de etiquetas conectadas a la red. Diseñar la desconexión, la retransmisión y los tiempos de espera |
| Enviar de forma directa por serie (COM virtual) o USB | No | Para impresoras de recibos y dispositivos instalados junto a equipos de medición. Exige elegir entre COM virtual, HID y WinUSB |
| Imprimir a través del controlador de clase IPP (IPP / IPP over USB) | Sí; compatible con WPP si se cumplen las condiciones | Comprobar la certificación Mopria, la habilitación y la accesibilidad de IPP en la red y el modo de funcionamiento USB. No es una ruta que salga del spooler |
Para el diseño de reconexión TCP, aplica el planteamiento de Puntos débiles de las aplicaciones de comunicación serie. Para elegir un método USB, véase Cómo gestionar dispositivos USB en aplicaciones de Windows. IPP está deshabilitado de forma predeterminada en algunas impresoras y hay que habilitarlo.4
El nombre «SDK» por sí solo no dice si una ruta es independiente. Use la documentación del SDK y la lista de 5.1 para confirmar si habla con el dispositivo de forma directa o acaba llamando a una cola de Windows.
Cuando se usa una cola de Windows, Universal Print queda del lado compatible con WPP, pero también pasa por el spooler. Una cola que no es ni el controlador de clase IPP ni Universal Print se detiene bajo WPP si es un controlador de terceros, XPS o fax, y una cola incluida que no figura en la lista de eliminación, como Microsoft Print to PDF, se juzga de forma individual. «Compatible con WPP» e «independiente del spooler» son clasificaciones distintas.
flowchart TB
accTitle: Flujo para decidir si una ruta de salida depende del spooler
accDescr: Si la ruta candidata envía a una cola de impresión de Windows, entonces una cola sobre el controlador de clase IPP cuya impresora está certificada Mopria y, en conexiones de red, tiene IPP habilitado y accesible o, en conexiones USB, está en modo IPP over USB, y una cola de Universal Print como parte de Windows Ready Print, dependen del spooler pero son compatibles con WPP; las colas sobre dispositivos no certificados Mopria o controladores de terceros, y las colas eliminadas según la tabla del capítulo 4 como el XPS Document Writer y el fax, pueden detenerse bajo WPP; las colas incluidas que no figuran en la lista de eliminación como Microsoft Print to PDF se juzgan de forma individual como en 5.1; si no envía a una cola, un SDK que internamente llama a una cola o un controlador vuelve al mismo juicio, mientras que un SDK que no lo hace o una ruta que envía de forma directa al dispositivo es una vía de escape que no depende del spooler
route["Ruta de salida candidata"]
route --> q1{"¿Envía a una cola de impresión de Windows?"}
q1 -->|"Sí"| q4{"¿Cola sobre el controlador de clase IPP?"}
q4 -->|"Sí"| q5{"¿Certificada Mopria?"}
q5 -->|"Sí"| q9{"¿IPP accesible? (USB: over USB)"}
q9 -->|"Sí"| depok["Depende, pero compatible con WPP"]
q9 -->|"No"| dep["Depende, y puede detenerse bajo WPP"]
q5 -->|"No"| dep
q4 -->|"No"| q6{"¿Cola de Universal Print?"}
q6 -->|"Sí"| depok
q6 -->|"No"| q7{"¿Eliminada según la tabla del capítulo 4?"}
q7 -->|"Sí (controlador de terceros, XPS, fax)"| dep
q7 -->|"No (Print to PDF etc.)"| indiv["Juzgar de forma individual (5.1)"]
q1 -->|"No"| q2{"¿Pasa por un SDK del fabricante?"}
q2 -->|"Sí"| q3{"¿Llama internamente a una cola o un controlador?"}
chk["Comprobar: documentación del SDK y lista de 5.1"] -.-> q3
q3 -->|"Sí"| q4
q3 -->|"No"| indep["Vía de escape sin dependencia"]
q2 -->|"No"| indep
Figura 22: se reduce a por qué cola pasa la ruta al final; aparte de una cola sobre el controlador de clase IPP para un dispositivo certificado Mopria y una cola de Universal Print, todo excepto las colas incluidas que no figuran en la lista de eliminación puede detenerse bajo WPP.
7. Procedimiento de verificación — Con y sin WPP
Confirme primero la rama de la verificación según use WPP o no. En ambos casos, conserve la salida de antes del cambio y verifique con los destinos de impresión que usa realmente.
flowchart TB
accTitle: Procedimiento de verificación de impresión según si se usa WPP
accDescr: Reproducir todas las colas en una máquina de prueba y guardar la salida de antes del cambio; si se usa WPP, habilitarlo, registrar las colas eliminadas, comparar la salida tras volver a registrar los dispositivos compatibles y comprobar la ruta alternativa para los dispositivos incompatibles; si no se usa, volver a detectar los dispositivos físicos sujetos al cambio de clasificación IPP con WPP deshabilitado y comparar la salida, y para todo lo demás confirmar la impresión en las colas reales
prepare["Reproducir y registrar todas las colas"]
prepare --> baseline["Guardar los resultados de impresión de antes del cambio"]
baseline --> use{"¿Usar WPP?"}
use -->|"Sí"| enable["Habilitar y registrar las colas eliminadas"]
enable --> compatible["Volver a registrar los dispositivos compatibles según haga falta"]
compatible --> compare["Comparar con las mismas impresiones de antes"]
enable --> alternate["Comprobar los dispositivos incompatibles en la ruta alternativa"]
use -->|"No"| physical{"¿Dispositivo físico sujeto al cambio de clasificación IPP?"}
physical -->|"Sí"| redetect["Eliminar y volver a detectar con WPP deshabilitado"]
redetect --> compare
physical -->|"No"| existing["Confirmar la impresión en las colas reales"]
compare --> finish["Registrar los resultados y restaurar la máquina de prueba"]
alternate --> finish
existing --> finish
Figura 23: la salida de antes del cambio es la base común, y solo los entornos que usan WPP lo habilitan. Los entornos que no lo usan comprueban el cambio de clasificación IPP y la impresión en las colas reales.
7.1 Preparación común: reproducir cada destino de impresión en una máquina de prueba, no en producción
Use un PC con Windows 11 24H2 o posterior para la verificación y no lo haga en un PC de producción. Para conexiones de red basta una máquina virtual que pueda alcanzar las mismas impresoras. Para evaluar el nuevo registro USB o la comunicación directa, use una máquina de prueba física, salvo que la máquina virtual pueda pasar la misma interfaz USB.
Tanto si se usa WPP como si no, los pasos 1 y 2 siguientes conservan el estado de antes del cambio.
- Reproducir cada cola que la aplicación usa en el terreno. Instale no solo las impresoras físicas sobre controladores del fabricante, sino también impresoras virtuales PDF de terceros y colas incluidas como
Generic / Text Only, en la misma configuración. Registre los nombres y versiones de controlador con el script de 5.1. El diferencial de eliminación solo puede juzgar las colas que existen en la máquina de prueba. - Recorrer las funciones de impresión y guardar la salida. Compruebe las pantallas de ajustes de papel, bandeja, dúplex y copias, la impresión de cada informe, la salida PDF y la impresión de etiquetas, para crear una base de comparación posterior.
flowchart TB
accTitle: Colas que hay que reproducir en la máquina de prueba
accDescr: De las colas que la aplicación usa según el inventario de 5.1, reproducir las impresoras físicas sobre controladores del fabricante, las impresoras virtuales como PDF de terceros y las colas sobre controladores incluidos como Generic / Text Only, todas en la máquina de prueba en la misma configuración que en el terreno, mostrando que la lista de eliminación del paso 3 solo puede juzgar las colas que existen en la máquina de prueba
inv["Inventario 5.1: colas que usa la aplicación"]
inv --> phys["Impresoras físicas (controladores del fabricante)"]
inv --> virt["Impresoras virtuales (PDF de terceros etc.)"]
inv --> inbox["Controladores incluidos (Generic / Text Only etc.)"]
phys --> vm["Reproducir en la máquina de prueba en la misma configuración"]
virt --> vm
inbox --> vm
vm --> judge["Juzgar la supervivencia con la lista de eliminación del paso 3"]
note["Las colas que faltan no aparecen en el diferencial de eliminación"] -.-> judge
Figura 24: una cola ausente de la máquina de prueba no aparece en el diferencial de eliminación, así que primero reproduzca cada cola que encontró el inventario.
7.2 Entornos que usan WPP: habilitarlo y verificar, incluidos los destinos de impresión que desaparecieron
Tras los pasos 1 y 2, avance en el orden siguiente.
- Habilitar WPP y registrar las colas que se eliminan. Elegir «Configurar» en «Windows protected print mode» de «Impresoras y escáneres» en la aplicación Configuración muestra los objetivos de eliminación en un cuadro de diálogo.2 Al habilitarlo mediante Directiva de grupo no aparece ningún cuadro de diálogo, así que guarde el resultado de
Get-Printerantes de aplicar la directiva y reinicie la máquina de prueba después de aplicarla. Confirme que está habilitado conIsProtectedPrintEnabledo la pantalla Configuración, tome la lista de nuevo y registre el diferencial.14 - Reinstalar las impresoras compatibles eliminadas. Reinstálelas con Windows Ready Print y confirme con el script de 5.1 que el
DriverNamede la impresora física ha pasado a Microsoft IPP Class Driver. - Repetir las mismas impresiones y comparar con el estado de antes del cambio. Compruebe las opciones de las pantallas de ajustes, la restauración de los ajustes guardados y la pérdida de destinos de impresión por cambios de nombre de cola. Cruce también los márgenes, las fuentes y las reglas de la salida con la salida del paso 2.
- Imprimir los dispositivos incompatibles por la ruta alternativa del capítulo 6. Reproduzca el estado en el que «la impresora no está en la lista» y confirme que la salida sigue funcionando. No solo el código que corrigió, sino también la ruta que proporcionó, es un objeto de verificación.
7.3 Entornos que no usan WPP: verificar el cambio de selección de controlador sin habilitarlo
En un entorno en el que ha decidido no usar WPP, no ejecute los pasos 3 y 4. Habilitar WPP elimina colas enteras, lo que oculta el efecto de la clasificación por sí sola.
| Destino de impresión | Qué hacer después de los pasos 1 y 2 |
|---|---|
| Dispositivo físico compatible con IPP sujeto al cambio de clasificación | Con WPP deshabilitado, eliminarlo, volver a detectarlo y reinstalarlo en la máquina de prueba. Confirmar con el script de 5.1 si pasa al controlador de clase IPP y realizar la comparación del paso 5 |
| Colas en la nube y virtuales | No hay un dispositivo físico que volver a detectar ni un cambio de clasificación, así que confirmar la salida del paso 2 en las colas que se usan realmente |
7.4 Restaurar después de la verificación y preparar el procedimiento de aprovisionamiento
Una máquina de prueba en la que WPP se habilitó en la aplicación Configuración local se puede restaurar con «Desactivar». Si se aplicó desde Directiva de grupo o Intune, hace falta un cambio de directiva del lado del administrador, así que prepare un procedimiento de restauración que coincida con la ruta de habilitación.213
Desactivar WPP deja las impresoras reinstaladas con Windows Ready Print como están. Las impresoras que eran incompatibles se reinstalan de forma manual.210
Para el aprovisionamiento, integre la directiva WPP y el procedimiento de nuevo registro de impresoras en el mecanismo de distribución descrito en De la directiva de grupo a Intune. La distribución de controladores de terceros mediante Point and Print exige de forma predeterminada credenciales de administrador desde KB5005652 en 2021,34 y bajo WPP la distribución en sí ya no ocurre.9 En los entornos que usan WPP, sustituya los procedimientos que dependen de la distribución de controladores por esta aplicación de directiva y este procedimiento de nuevo registro.
flowchart TB
accTitle: Revisión del procedimiento de aprovisionamiento
accDescr: El procedimiento que distribuía controladores de terceros mediante Point and Print se abandona porque se exigen credenciales de administrador desde 2021 y bajo WPP la distribución en sí ya no ocurre, y en su lugar la directiva WPP (Directiva de grupo u OMA-URI) y el procedimiento de nuevo registro de impresoras se integran en el mecanismo de distribución
old["Distribuir controladores de terceros mediante Point and Print"]
old --> why1["Credenciales de administrador exigidas desde 2021"]
old --> why2["Ninguna distribución en absoluto bajo WPP"]
why1 --> drop["Retirar del procedimiento"]
why2 --> drop
drop --> add["Integrar la directiva WPP y el procedimiento de nuevo registro"]
Figura 25: el procedimiento de distribución de controladores se sustituye por un procedimiento de distribución de la directiva WPP y de nuevo registro de impresoras.
8. Resumen
La respuesta necesaria se decide en el orden «¿sobrevive el destino de impresión?» → «¿de qué depende el código?» → «¿en qué condiciones verificamos?».
| Hallazgo | Respuesta |
|---|---|
| La cola no sobrevive a WPP y la impresora física no se puede volver a registrar | Primero proporcionar otra ruta o decidir no usar WPP |
| Se guardan ajustes específicos del controlador | Guardar intención en lugar de estado y comprobar las capacidades justo antes de imprimir |
| Depende de nombres de cola o de impresoras virtuales | Proporcionar comprobaciones de existencia, registro, notificación y nueva selección del destino de impresión. Generar los PDF de forma directa con una biblioteca |
| El paso del envío RAW desaparece bajo WPP | Proporcionar una ruta que no dependa del spooler |
| El destino de impresión está asegurado y la aplicación solo dibuja sin depender de un controlador concreto | No reescribir de un golpe; verificar la salida real |
Corregir una cosa no es el final. Tras corregir los ajustes, siga con los nombres de cola, las impresoras virtuales y el envío RAW, y por último confirme la salida como en el capítulo 7. En los dispositivos donde el cambio de clasificación IPP puede ocurrir aunque no se use WPP, necesita el inventario de dependencias y la verificación de nueva detección con WPP dejado deshabilitado.
flowchart TB
accTitle: Árbol de decisión para corregir o solo verificar
accDescr: Primero decidir si la cola de destino sobrevive a WPP (una cola en la nube de Universal Print o una impresora virtual compatible con WPP) o si la impresora física se puede volver a registrar con Windows Ready Print; si no, elegir entre proporcionar otra ruta y no usar WPP; si el dispositivo admite IPP y puede sustituirse por el cambio de clasificación, comprobar en orden el guardado de ajustes específicos del controlador, las dependencias de nombres de cola o impresoras virtuales (incluidas las de SDK y bibliotecas) y el envío RAW, corrigiendo cada una que aplique antes de seguir; por último, los entornos que usan WPP van a la verificación con WPP habilitado del capítulo 7, los que no lo usan envían los dispositivos físicos compatibles con IPP a la verificación de nueva detección con WPP deshabilitado y las colas en la nube o virtuales a comprobaciones de salida real, y si no se usa WPP y el reemplazo no tiene efecto, seguir operando en la ruta actual
q0{"¿La cola sobrevive a WPP o se puede volver a registrar?"}
q0 -->|"No"| alt{"Qué hacer"}
alt -->|"Proporcionar otra ruta"| qi{"¿Admite IPP y se puede sustituir?"}
alt -->|"No usar WPP"| qi2{"¿Admite IPP y se puede sustituir?"}
qi -->|"Sí"| q1{"¿Se guardan ajustes específicos del controlador?"}
qi -->|"No"| verify["Solo verificar (capítulo 7)"]
qi2 -->|"Sí"| q1
qi2 -->|"No"| keep["Seguir operando en la ruta actual"]
q0 -->|"Sí"| q1
q1 -->|"Sí"| fix1["Corregir (5.2)"]
fix1 --> q2{"¿Depende de nombres de cola o de impresoras virtuales?"}
sdk["Incluidas las dependencias internas de SDK y bibliotecas"] -.-> q2
q1 -->|"No"| q2
q2 -->|"Sí"| fix2["Corregir (5.3, 5.4)"]
fix2 --> q3{"¿Envía RAW a una cola que no sobrevive a WPP?"}
q2 -->|"No"| q3
q3 -->|"Sí"| fix3["Proporcionar un paso (capítulo 6)"]
fix3 --> vq{"¿Usar WPP?"}
q3 -->|"No"| vq
vq -->|"Sí"| verify
vq -->|"No"| pq{"¿Dispositivo físico compatible con IPP?"}
pq -->|"Sí"| redetect["Verificación de nueva detección sin WPP (7.3)"]
pq -->|"No"| outchk["Confirmar la salida en las colas reales"]
Figura 26: decida primero si la cola sobrevive a WPP; en las dependencias del código, pase a la siguiente comprobación incluso después de corregir una, y verifique la ruta corregida al final. Si no se usa WPP, no verifique con la habilitación de WPP del capítulo 7, sino volviendo a detectar dispositivos físicos compatibles con IPP con WPP deshabilitado y con la salida real en colas en la nube y virtuales.
Ponga el plazo de preparación en su propio plan de implantación, no en las fechas de Microsoft
Se dice que WPP pasará a estar habilitado de forma predeterminada en el futuro, pero no se da una fecha.10 Ponga el plazo de preparación antes de habilitar WPP usted mismo, o antes de implantar la actualización de características de Windows 11 24H2 o posterior en el terreno. El 1 de julio de 2027 es un hito del lado de la oferta de controladores, no un plazo para las aplicaciones empresariales.1
flowchart TB
accTitle: Dónde poner el plazo de preparación del lado de la aplicación empresarial
accDescr: Tomar la lista e inventariar ahora, terminar los cambios de ruta y la verificación para su propio plazo, es decir antes de habilitar WPP usted mismo o antes de implantar la actualización de características 24H2 o posterior; la detención de las actualizaciones de controladores el 1 de julio de 2027 es un hito del lado de la oferta, no el plazo de preparación, y el objetivo es alcanzar un estado no afectado por la habilitación predeterminada de WPP, cuyo momento es indeterminado, cuando llegue
now["Ahora: tomar la lista e inventariar"]
now --> prep["Cambios de ruta y verificación"]
prep --> deadline["Plazo: antes de habilitar WPP usted mismo / antes de implantar la actualización de características"]
deadline --> fine["No afectado cuando WPP pase a estar habilitado de forma predeterminada (momento indeterminado)"]
ms["1 de julio de 2027: se detienen las actualizaciones de controladores"] -.->|"hito del lado de la oferta, no un plazo"| prep
Figura 27: ponga el plazo en su propio plan de implantación y no convierta las fechas hito de Microsoft en su corte.
Empiece por tomar la lista en cada sede del cliente y entender las dependencias de ajustes, destinos de impresión y rutas de salida. Genere los PDF de forma directa y conserve para etiquetas y recibos una ruta independiente de la pila de impresión. Después verifique la impresión en las condiciones reales de implantación.
Los entornos que se quedan en Windows 10 quedan fuera del alcance de este plan, pero el soporte de Windows 10 (22H2) en el canal regular terminó en octubre de 2025. Enterprise LTSC e IoT Enterprise LTSC tienen fechas de fin distintas por edición; compruebe el ciclo de vida. Para decisiones que involucran ESU y LTSC, véase La salida realista tras el fin de soporte de Windows 10, y para PC industriales, ¿Qué Windows instalar en un PC industrial?. La preparación de la impresión no está completa hasta que vuelva a hacer la verificación del capítulo 7 en el Windows 11 al que migre.
Artículos relacionados
- Impresión y salida en PDF en aplicaciones empresariales de Windows — cómo elegir entre System.Drawing.Printing, WPF y bibliotecas de informes
- Cómo crear la salida de informes de Excel - COM/Open XML/plantillas
- Cómo crear y operar un servicio de Windows — de la diferencia con el Programador de tareas a la creación de servicios con BackgroundService
- Cómo gestionar dispositivos USB en aplicaciones de Windows — cómo elegir entre COM virtual, HID, WinUSB y SDK propietario
- Puntos débiles de las aplicaciones de comunicación serie - hasta el diseño de la reconexión y los registros
- De la directiva de grupo a Intune — Guía de migración de gestión de dispositivos para pymes
- La salida realista tras el fin de soporte de Windows 10 — la tabla de decisión entre ESU, LTSC y la renovación de equipos
Ámbitos de consultoría relacionados
KomuraSoft LLC se ocupa de inventariar las dependencias de controladores de impresora de las aplicaciones empresariales con impresión de informes y etiquetas, de rehacer las rutas de impresión (generación directa de PDF, control directo de impresoras de etiquetas) y de diseñar planes de verificación que presuponen Windows protected print mode.
Referencias
-
Microsoft Learn, End of servicing plan for third-party printer drivers on Windows. Sobre la cronología actualizada en mayo de 2025 (15 de enero de 2026, 1 de julio de 2026 y 1 de julio de 2027), el alcance siendo Windows 11 y posteriores y Windows Server 2025 y posteriores, los controladores existentes permaneciendo instalables sin un plan para desactivar la funcionalidad v3/v4, las tres condiciones de excepción de firma (sin certificación Mopria, Windows 10 o anterior como destino más alto, ARM64 nativo), los dispositivos USB pudiendo usar cada función solo en modo IPP over USB, y el Microsoft IPP Class Driver incluido a partir de Windows 10 21H2. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn, Overview of Windows protected print mode. Sobre las impresoras que usan controladores de terceros desinstalándose y eliminándose del almacén de controladores al habilitarlo, las impresoras instaladas con un controlador de terceros necesitando reinstalación aunque estén certificadas Mopria, las impresoras de software no compatibles (como OneNote (Desktop)), XPS y el fax eliminándose, los usuarios no pudiendo desactivarlo cuando se habilita mediante Directiva de grupo, y el procedimiento para habilitarlo y desactivarlo desde la aplicación Configuración. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Microsoft Learn, Step 2: A Driver Package for the Device is Selected. Sobre Windows clasificando cada paquete cuando coinciden varios paquetes de controladores e instalando el de mejor rango, y eligiendo por fecha y versión cuando los rangos empatan. ↩
-
Microsoft Learn, IPP printers with the Universal Print Connector. Sobre el Microsoft IPP Class Driver siendo el controlador incluido que se comunica con impresoras certificadas Mopria por IPP, e IPP estando deshabilitado de forma predeterminada en algunas impresoras y debiendo habilitarse. ↩ ↩2
-
Microsoft Learn, Legacy printer driver submission process. Sobre los envíos de controladores de impresora, ya sea WHQL o Attestation, bloqueados de forma predeterminada después del 15 de enero de 2026 y pasando a ser una revisión manual con un documento de justificación adjunto. ↩
-
Microsoft Learn, Windows Print Path Overview. Sobre Windows teniendo dos rutas de impresión principales, la ruta de impresión GDI y la ruta de impresión XPS. ↩
-
Microsoft Learn, Discover Windows Ready Print. Sobre Windows Ready Print siendo el nombre que cubre IPP, eSCL y Universal Print, no requiriendo un controlador de terceros, estando pensado para impresoras certificadas Mopria y siendo independiente de la arquitectura del PC. ↩
-
Microsoft Learn, Universal Print troubleshooting - Understanding the stages of a print job. Sobre las impresoras de Universal Print usando el controlador de clase Universal Print incluido, y el spooler enviando los trabajos al servicio por IPP over HTTPS. ↩ ↩2 ↩3
-
Microsoft Learn, More information on Windows protected print mode for enterprises and developers. Sobre los errores de impresión representando el 9 % de los casos del MSRC en los tres años anteriores, el spooler ejecutándose como SYSTEM y cargando código de terceros, los controladores antiguos siendo incompatibles con CFG/CET/ACG, IPP basándose en HTTP POST e identificándose por URI con unos pocos PDL como PWG Raster y PDF renderizados en el cliente, las restricciones de carga de módulos, el renderizado XPS con privilegios de usuario, el token restringido, la prohibición de creación de procesos hijos y las mitigaciones binarias bajo WPP, y Point and Print ya no instalando controladores de terceros. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, Windows protected print mode FAQ. Sobre las impresoras incompatibles no pudiendo reinstalarse mientras está habilitado y necesitando reinstalación manual después de desactivarlo, las funciones propietarias proporcionándose a través de una Print Support App, y Windows protected print mode pasando a estar habilitado de forma predeterminada en algún momento futuro. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Printer driver isolation. Sobre el significado de los modos de aislamiento (Shared / Isolated / None), los controladores que no declaran la palabra clave INF
DriverIsolationejecutándose de forma predeterminada en el proceso del spooler, y los administradores pudiendo invalidar el ajuste de cada controlador desde la consola Administración de impresión o las funciones del spooler. ↩ ↩2 -
Microsoft Learn, What’s new in Windows 11, version 24H2. Sobre Windows protected print mode añadido en 24H2 y habilitado desde la aplicación Configuración o Directiva de grupo. ↩
-
Microsoft Learn, Policy CSP - Printers: ConfigureWindowsProtectedPrint. Sobre el sistema operativo aplicable siendo Windows 11 24H2 y posteriores, estando deshabilitado de forma predeterminada sin restricciones sobre controladores ni funciones de impresión, y la clave del Registro asignada por ADMX
Software\Policies\Microsoft\Windows NT\Printers\WPPy el valorWindowsProtectedPrintGroupPolicyState. ↩ ↩2 ↩3 ↩4 ↩5 -
Microsoft Learn, Windows protected print mode for enterprises. Sobre el procedimiento para habilitarlo con la Directiva de grupo «Configure Windows protected print», el OMA-URI de Intune, y un cliente con WPP habilitado no pudiendo administrar un servidor con WPP deshabilitado desde Administración de impresión. ↩ ↩2 ↩3
-
Microsoft Learn, WindowsProtectedPrintInfo.IsProtectedPrintEnabled Property. Sobre la propiedad estática introducida en Windows 11 24H2 que indica si WPP está habilitado en el dispositivo actual. ↩
-
Microsoft Learn, Get-PrinterDriver. Sobre devolver la lista de controladores de impresora del equipo especificado sin exigir credenciales de administrador. ↩
-
Microsoft Learn, PnPUtil Command Syntax. Sobre
/enum-driversenumerando paquetes de controladores de terceros,/classrestringiendo por nombre de clase a partir de Windows 11 21H2, y ejecutarlo desde un símbolo del sistema abierto como administrador. ↩ ↩2 -
Microsoft Learn, How to display printer status in a UWP device app. Sobre el procedimiento para distinguir v3 de v4 con
get-printer | Select Name, {(get-printerdriver -Name $_.DriverName).MajorVersion}. ↩ -
Microsoft Learn, PnPUtil. Sobre los paquetes incluidos excluyéndose al enumerar los paquetes del almacén de controladores, de modo que solo se listan los paquetes que no son inbox. ↩
-
Microsoft Learn, PrintQueue.QueueDriver Property. Sobre recuperar el controlador de impresora que usa una cola como
PrintDriver. ↩ -
Microsoft Learn, PrintServer Class. Sobre las clases del espacio de nombres
System.Printingno estando admitidas para su uso en un servicio de Windows o una aplicación ASP.NET, donde pueden provocar un descenso del rendimiento o excepciones en tiempo de ejecución. ↩ -
Microsoft Learn, DEVMODEW structure (wingdi.h). Sobre los miembros privados definidos por el controlador permitidos inmediatamente después de los miembros públicos, cuyo tamaño indica
dmDriverExtra, y Windows validando solo la parte pública, de modo que datos corruptos en la parte privada pueden hacer que el controlador se bloquee. ↩ -
dotnet/winforms (GitHub), PrinterSettings.cs. Sobre
SetHdevmodecopiando internamente los bytesdmDriverExtradel área privada yGetHdevmodeescribiéndolos de vuelta, y ningún otro camino reteniendo el área privada. ↩ -
Microsoft Learn, PrinterSettings Class. Sobre la declaración de .NET Framework llevando el atributo
Serializabley la de .NET no, yGetHdevmodeySetHdevmodeconvirtiendo hacia y desdeDEVMODE. ↩ ↩2 -
Microsoft Learn, SerializableAttribute Class. Sobre todos los campos, privados y públicos, serializándose de forma predeterminada en un tipo marcado con el atributo
Serializable, y el atributoNonSerializedusándose para excluirlos. ↩ -
Microsoft Learn, PaperSize.RawKind Property. Sobre
RawKindsiendo un entero que representa un valor de tipo de papel estándar o un valor personalizado. ↩ -
Microsoft Learn, PaperSourceKind Enum. Sobre
Custom, que representa un origen de papel específico de la impresora, estando definido además de los tipos de origen de papel estándar comoUpperyLower. ↩ ↩2 -
Microsoft Learn, Print Schema. Sobre el Print Schema permitiendo extensiones de terceros y los elementos Property privados debiendo pertenecer a un espacio de nombres claramente asociado a ese tercero. ↩
-
Microsoft Learn, Print Schema-Related Technologies. Sobre el PrintTicket siendo el sucesor de
DEVMODE, y los PrintTicket específicos del dispositivo pudiendo contener extensiones privadas para modelos concretos. ↩ -
Microsoft Learn, How to: Validate and Merge PrintTickets. Sobre el procedimiento de comprobar las características admitidas de la impresora con
PrintQueue.GetPrintCapabilitiesy fusionar y validar la petición en unPrintTicketválido específico de la impresora conMergeAndValidatePrintTicket. ↩ -
Microsoft Learn, ConflictStatus Enum. Sobre
MergeAndValidatePrintTickethaciendo que el controlador sustituya los ajustes no admitidos y devuelva un ticket válido, y notificando que se produjo una sustitución medianteConflictResolvedenValidationResult.ConflictStatus. ↩ -
Microsoft Learn, WritePrinter function. Sobre el procedimiento de
StartDocPrinteraEndDocPrinter, el documento debiendo describir por completo los ajustes equivalentes aDEVMODEen el lenguaje del hardware cuando el tipo de datos es «RAW», yWritePrintersiendo una función bloqueante que puede hacer que la aplicación parezca no responder cuando se llama desde el subproceso de IU. ↩ -
Microsoft Learn, RAW data type. Sobre los datos RAW enviándose al monitor de impresión sin procesamiento adicional, con un archivo formado por comandos PCL como ejemplo. ↩
-
Microsoft Learn, Printing issue troubleshooting guidance. Sobre el cambio del comportamiento predeterminado de Point and Print desde KB5005652 que exige credenciales de administrador, y el caso en el que impresoras de recibos y de etiquetas conectadas por USB dejaron de imprimir tras una actualización de 2021 y el problema se resolvió con un Known Issue Rollback. ↩ ↩2
Artículos relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
Impresión y salida en PDF en aplicaciones empresariales de Windows ── cómo elegir entre System.Drawing.Printing, WPF y bibliotecas de informes
Organiza en una tabla de decisión por requisitos la impresión WinForms con PrintDocument, la impresión WPF con FlowDocument o FixedDocume...
Integrar la autenticación de Entra ID en aplicaciones WinForms/WPF — Configuración práctica con MSAL.NET y el bróker WAM
Cómo integrar Entra ID en apps WinForms/WPF: cliente público, registro de la app, AcquireTokenSilent, bróker WAM y persistencia de la cac...
Iconos de la bandeja del sistema y notificaciones toast en aplicaciones Windows — los escollos de NotifyIcon y cómo elegir el AppNotification adecuado
Organiza la implementación de la residencia en la bandeja del sistema y las notificaciones toast en aplicaciones Windows empresariales: e...
Internacionalización de aplicaciones WinForms/WPF — la práctica de resx, ensamblados satélite y el cambio de cultura
Organizamos la internacionalización de aplicaciones de escritorio Windows: la diferencia entre CurrentCulture y CurrentUICulture, el meca...
Pruebas de UI automatizadas para aplicaciones de escritorio de Windows ── el funcionamiento de UI Automation y pruebas resistentes a roturas con FlaUI
Organizamos las pruebas de UI automatizadas para apps WinForms/WPF desde el funcionamiento de Windows UI Automation: implementación mínim...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Hilo de UI y temporizadores
Hilo de UI de WPF / WinForms, flujos asíncronos, Dispatcher y diseño de temporizadores.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Desarrollo de aplicaciones para Windows
Revisar y rehacer las rutas de impresión de aplicaciones empresariales con impresión de informes y etiquetas entra en el ámbito de la consultoría de desarrollo de aplicaciones Windows.
Consultoría técnica y revisión de diseño
Inventariar las dependencias de controladores de impresora de una aplicación existente y una revisión de diseño que fije el orden de sustitución entra en el ámbito de la consultoría técnica.
Preguntas frecuentes
Preguntas habituales en las consultas sobre el tema del artículo.
- ¿Las impresoras y las aplicaciones que funcionan hoy dejarán de imprimir de golpe cuando pasen julio de 2026 o julio de 2027?
- No. El plan de Microsoft es un corte gradual del lado de la oferta: los controladores de terceros nuevos ya no se publican en Windows Update, la clasificación de controladores prefiere el controlador de clase IPP y las actualizaciones dejan de aceptarse. El plan indica con claridad que no desactiva los controladores existentes, y estos se pueden seguir instalando desde los instaladores que proporciona el fabricante. Las situaciones peligrosas son, en los dispositivos a los que el controlador de clase IPP coincide, el momento en que se cambia un PC o se reinstala el sistema operativo y el controlador se sustituye automáticamente por el de clase IPP, y el momento en que se habilita Windows protected print mode.
- ¿Windows protected print mode está habilitado de forma predeterminada?
- En el momento de redactar este artículo (septiembre de 2026) está deshabilitado de forma predeterminada y se habilita desde la aplicación Configuración, Directiva de grupo o Intune. Sin embargo, las preguntas frecuentes de Microsoft indican con claridad que se habilitará de forma predeterminada en algún momento futuro. No se da una fecha, así que la preparación consiste en alcanzar un estado en el que habilitarlo no cause problemas antes de que ocurra.
- ¿Qué ocurre con las impresoras de etiquetas y las impresoras de recibos?
- Las impresoras que no pueden obtener la certificación Mopria figuran entre las condiciones en las que la firma de controladores sigue permitiéndose de forma excepcional después del 15 de enero de 2026. Así que un controlador del fabricante puede seguir disponible por ahora, pero en un entorno donde Windows protected print mode está habilitado, las impresoras que usan controladores de terceros se desinstalan y no se pueden usar tal cual. Un SDK del fabricante que habla con el dispositivo directamente por TCP, USB o serie, o una ruta que controla la impresora enviando su lenguaje de impresora de forma directa, la aísla de los cambios del Print Spooler. Un SDK que internamente llama a una cola o un controlador de Windows se detiene igual cuando desaparece el controlador de terceros, así que no es una vía de escape.
- ¿El código de impresión de la aplicación puede quedarse en PrintDocument?
- La ruta de impresión GDI y la ruta de impresión XPS se mantienen, y Microsoft indica con claridad que no tiene planes de desactivar la funcionalidad de los controladores v3/v4. Una aplicación que solo dibuja con PrintDocument o FixedDocument es algo que hay que verificar, no algo que hay que corregir. Lo que hay que corregir es el código que guarda y restaura ajustes específicos del controlador (la parte privada de DEVMODE o un espacio de nombres privado en un PrintTicket), el código que depende de un nombre de cola o de impresora virtual concreto (incluido lo que un SDK del fabricante o una biblioteca de informes llama internamente) y el código que envía datos RAW a través del spooler a una cola que no sobrevive a WPP (por ejemplo, una cola sobre un controlador del fabricante). Sin embargo, si la impresora de destino en sí es un modelo que no se puede volver a registrar con Windows Ready Print, toda la cola desaparece bajo Windows protected print mode aunque el código solo dibuje, así que proporcionar otra ruta va primero.
- ¿Por dónde debo empezar?
- Empiece por tomar la lista de impresoras y controladores en cada sede del cliente. Get-Printer y Get-PrinterDriver de PowerShell indican, sin derechos de administrador, qué cola usa qué controlador (v3 o v4, o el controlador de clase IPP). A continuación, cruce esa lista con las colas que la aplicación nombra de forma explícita, para las que guarda ajustes o a las que envía datos RAW, y clasifíquelas en «dejarlo», «verificar» y «cambiar la ruta» con la tabla de decisión de este artículo.
Perfil del autor
Página de presentación del autor del artículo.
Go Komura
Representante de KomuraSoft LLC
Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.