Fin de la maintenance des pilotes d'imprimante Windows — Comment les applications métier doivent préparer l'impression des rapports et des étiquettes
· Mis à jour le: · Go Komura · Windows, Développement Windows, Windows 11, C#, .NET, WinForms, WPF, Impression, Rapports, Pilote d'imprimante, IPP, Exploitation, Conseil technique
Historique des révisions (première version, publiée le 1 Sep 2026)
- Première publication
« Nous avons remplacé le PC et les choix de papier et de bac sont différents, alors que c’est la même imprimante. » « Les paramètres d’impression enregistrés ne reviennent pas. » « L’imprimante d’étiquettes a disparu de la liste. » Se préparer à la fin de la maintenance des pilotes d’imprimante, c’est faire en sorte que des changements de ce type n’arrêtent pas l’activité.
La première chose à comprendre est que le plan de fin de maintenance des pilotes et l’activation de Windows protected print mode sont deux choses distinctes. L’impression existante ne s’arrête pas toute au moment où les dates du plan passent. En revanche, lorsque la façon de choisir un pilote change, ou lorsque Windows protected print mode est activé, les paramètres et les destinations d’impression dont l’application dépendait sont perdus.12
Cet article s’adresse aux développeurs qui maintiennent des applications métier Windows en WinForms, WPF et assimilés, et aux administrateurs qui déploient des imprimantes. Il parcourt ce qui change, ce qu’il faut examiner, ce qu’il faut corriger et comment vérifier, dans cet ordre. Pour le choix d’une API d’impression ou d’une méthode de sortie PDF, voir l’article précédent, Impression et sortie PDF dans les applications métier Windows.
L’environnement requis est Windows 11 (24H2 ou version ultérieure pour tester WPP), PowerShell 5.1 ou version ultérieure (module PrintManagement) et C# (.NET 6 ou version ultérieure, ou .NET Framework 4.x ; System.Drawing.Printing / System.Printing). Le niveau de difficulté est intermédiaire.
1. L’essentiel d’abord
Plutôt que de réécrire tout le code d’impression d’un seul coup, confirmez d’abord si la destination d’impression survit, puis corrigez les endroits qui dépendent du pilote.
L’ordre des décisions a trois étapes.
| Ordre | Ce qu’il faut vérifier | Action suivante |
|---|---|---|
| 1. Vérifier la destination d’impression | La file survit-elle à WPP ? L’imprimante physique peut-elle être réenregistrée avec Windows Ready Print ? | Si elle ne survit pas, fournir d’abord un autre chemin de sortie ou décider de ne pas utiliser WPP |
| 2. Vérifier les dépendances de l’application | Dépend-elle de paramètres propres au pilote, de noms de file, d’imprimantes virtuelles ou de l’envoi RAW ? | Corriger les endroits concernés. Inclure les dépendances internes aux SDK et aux bibliothèques de rapports |
| 3. Confirmer par une sortie réelle | Peut-elle encore produire correctement des rapports, des PDF et des étiquettes lorsque le pilote ou la file change ? | Les environnements qui utilisent WPP vérifient avec le mode activé ; ceux qui ne l’utilisent pas vérifient selon une autre procédure |
Si l’application ne fait que dessiner avec PrintDocument ou FixedDocument, elle est en principe un objet de vérification, pas de reprise. Toutefois, si la file de destination elle-même disparaît sous WPP et ne peut pas être réenregistrée, l’impression échoue même lorsque le code de dessin est correct. Un autre chemin est alors nécessaire en premier.
Si vous voulez commencer par le travail lui-même, procédez dans cet ordre : dresser la liste en 5.1 → juger la destination d’impression avec les tableaux des chapitres 4 et 5.1 → vérifier les dépendances de 5.2 à 5.5 → choisir un chemin au chapitre 6 → vérifier au chapitre 7. Les chapitres 2 à 4 expliquent le contexte des points où la décision n’est pas évidente.
Dans la suite, Windows protected print mode est abrégé WPP. Une « file » est une destination d’impression enregistrée auprès de Windows, et le « spouleur » est le mécanisme qui reçoit les travaux d’impression et les transmet à la destination de sortie.
Dans le diagramme, un trait continu marque une relation qui vaut toujours et un trait pointillé une relation conditionnelle (les conditions figurent dans l’explication de chaque relation sur la page de détail). La liste complète des relations (39 au total, avec preuve et niveau de certitude) et les définitions des concepts principaux sont rassemblées sur la page de détail de la carte des connaissances (en japonais). Données : JSON-LD / Turtle
2. Ce qui a été décidé — Une chronologie en trois étapes
2.1 Ce qui s’arrête, c’est l’offre et les mises à jour, pas une coupure générale des pilotes existants
La source primaire est « End of servicing plan for third-party printer drivers on Windows » sur Microsoft Learn. Le plan a été annoncé en septembre 2023 et ses dates révisées en mai 2025. Au moment de la rédaction, le plan est le suivant.1
| Date | Ce qui change | Ce que les applications métier doivent surveiller |
|---|---|---|
| 15 janvier 2026 | Sous Windows 11 et versions ultérieures et Windows Server 2025 et versions ultérieures, les nouveaux pilotes d’imprimante ne sont plus publiés dans Windows Update. Les mises à jour des pilotes existants restent possibles après examen au cas par cas | Lors du déploiement de nouveaux PC et imprimantes, un pilote constructeur peut ne plus s’obtenir de la même façon qu’auparavant |
| 1er juillet 2026 | Le classement des pilotes d’imprimante change pour toujours privilégier le pilote de classe IPP fourni avec Windows | Sur les appareils auxquels le pilote de classe IPP correspond aussi, un autre pilote peut être choisi lors d’un remplacement de PC ou d’une redétection d’imprimante |
| 1er juillet 2027 | Hormis les correctifs de sécurité, les mises à jour des pilotes d’imprimante tiers ne sont plus acceptées | Ne prenez pas la date d’arrêt des mises à jour pour l’échéance de la préparation côté application |
Les pilotes existants restent installables depuis Windows Update et depuis les programmes d’installation fournis par les constructeurs, et Microsoft indique n’avoir aucun plan pour désactiver les fonctionnalités des pilotes v3/v4. Autrement dit, il s’agit d’un plan pour mettre progressivement fin à l’offre et à la mise à jour des pilotes, pas d’un plan pour désactiver le jour J les pilotes déjà installés sur les PC en production.1
flowchart TB
accTitle: Ce qui change et ce qui ne change pas avec la fin de la maintenance des pilotes
accDescr: La fin de la maintenance des pilotes d'imprimante ne change par elle-même ni le point d'entrée de l'API de dessin de l'application ni les pilotes existants ; ce n'est que lorsqu'un autre pilote est choisi à l'installation neuve ou à la redétection que la liste des papiers, les fonctions propriétaires et le nom de file renvoyés par le pilote sont remplacés, et les changements causés par l'activation de Windows protected print mode, y compris le retrait des imprimantes virtuelles, sont un mécanisme distinct traité au chapitre 4
eos["Fin de la maintenance des pilotes d'imprimante"]
eos --> keep["Ce qui ne change pas"]
eos --> cond["Lorsqu'un autre pilote est choisi à l'installation neuve ou à la redétection"]
cond --> change["Ce qui est remplacé"]
keep --> api["Point d'entrée de l'API de dessin"]
keep --> drv["Pilotes existants"]
change --> caps["Papier, bacs, fonctions propriétaires"]
change --> qname["Nom de file"]
Figure 1 : la fin de la maintenance seule ne change rien ; lorsqu’un autre pilote est choisi, les informations et les noms fournis par le pilote sont remplacés. Les changements causés par l’activation de WPP, y compris le retrait des imprimantes virtuelles, sont un mécanisme distinct (chapitre 4).
2.2 Les pilotes changent sur le terrain surtout dans deux situations
Même si le plan n’arrête pas les pilotes existants, l’environnement que voit l’application change dans les situations suivantes.
| Situation | Ce qui se produit |
|---|---|
| Remplacement de PC, réinstallation du système d’exploitation, redétection d’imprimante | Si le pilote de classe IPP correspond aussi à l’appareil, le classement choisit un autre pilote qu’auparavant |
| Activation de WPP | Les imprimantes sur pilotes tiers sont retirées. Les modèles compatibles sont réenregistrés avec Windows Ready Print ; les modèles incompatibles ne peuvent plus s’utiliser tels quels |
Lorsque plusieurs packages de pilotes correspondent au même appareil, Windows attribue à chacun un rang et sélectionne le meilleur. Le changement du 1er juillet 2026 fait préférer le pilote de classe IPP dans cette sélection. Sur les appareils pour lesquels le pilote de classe IPP n’est pas un candidat, le package constructeur peut continuer à être choisi.31
flowchart TB
accTitle: Deux chemins par lesquels les pilotes sont remplacés sur le terrain
accDescr: Sur les appareils auxquels le pilote de classe IPP correspond, le classement sélectionne le pilote de classe IPP lors d'un remplacement de PC, d'une réinstallation du système d'exploitation ou d'une redétection d'imprimante et le pilote est remplacé ; lorsque Windows protected print mode est activé, les imprimantes sur pilotes tiers sont retirées, le pilote est remplacé sur les modèles qui peuvent être réenregistrés avec Windows Ready Print, et la destination d'impression est perdue sur les modèles qui ne le peuvent pas
site["PC sur le terrain"]
site --> r1["Remplacement de PC, réinstallation du système d'exploitation, redétection"]
site --> r2["Windows protected print mode activé"]
r1 --> rank["Privilégié sur les appareils auxquels le pilote de classe IPP correspond"]
r2 --> del["Imprimantes sur pilotes tiers retirées"]
rank --> swap["Le pilote est remplacé"]
del --> re{"Peut-il être réenregistré avec Ready Print ?"}
re -->|"Oui"| swap
re -->|"Non"| lost["La destination d'impression est perdue"]
Figure 2 : distinguer le plan de fin de maintenance et WPP permet de séparer les situations où le pilote change de celles où la destination d’impression elle-même est perdue.
Il importe aussi ici de ne pas traiter la prise en charge IPP et la certification Mopria comme la même condition.
| Condition | Ce qu’elle décide surtout |
|---|---|
| Le pilote de classe IPP correspond à l’appareil | Si le changement de classement peut remplacer le pilote |
| Certifié Mopria, et pour les connexions réseau IPP est activé et joignable, et pour les connexions USB l’appareil est en mode IPP over USB | Si l’imprimante physique peut être réenregistrée comme Windows Ready Print sous WPP |
Sur un appareil qui prend en charge IPP sans certification Mopria, le changement de classement peut remplacer le pilote même si vous n’utilisez pas WPP. Inversement, un nom de pilote « Microsoft IPP Class Driver » à lui seul ne confirme pas que l’imprimante peut s’utiliser sous WPP.14
flowchart TB
accTitle: La correspondance du pilote de classe IPP et la certification Mopria sont des conditions distinctes
accDescr: Si l'imprimante prend en charge IPP, le changement de classement peut sélectionner le pilote de classe IPP et remplacer le pilote, tandis que la certification Mopria est une condition distincte qui décide si l'imprimante peut être réenregistrée sous Windows protected print mode, exigeant qu'IPP soit activé et joignable sur les appareils en réseau et le mode IPP over USB sur les appareils USB
printer["Imprimante"]
printer --> q1{"Prend en charge IPP ?"}
q1 -->|"Oui"| rank["Peut être remplacé"]
q1 -->|"Non"| keep["Reste sur le pilote constructeur"]
printer --> q2{"Certifiée Mopria ?"}
q2 -->|"Non"| ng["Ne peut pas être réenregistrée sous WPP"]
q2 -->|"Oui"| q3{"Connexion USB ?"}
q3 -->|"Non"| q5{"IPP activé et joignable ?"}
q5 -->|"Oui"| ok["Peut être réenregistrée sous WPP"]
q5 -->|"Non"| ng
q3 -->|"Oui"| q4{"Mode IPP over USB ?"}
q4 -->|"Oui"| ok
q4 -->|"Non"| ng
Figure 3 : l’effet du classement se décide par la prise en charge IPP ; la survie de l’imprimante sous WPP se décide par la certification Mopria plus IPP activé et joignable (mode IPP over USB pour les connexions USB).
2.3 La signature des pilotes a des exceptions, mais la poursuite n’est pas garantie
Après le 15 janvier 2026, les pilotes qui remplissent l’une des conditions suivantes peuvent soumettre une exception de signature pour un examen au cas par cas.1
- Pour les imprimantes qui ne peuvent pas obtenir la certification Mopria.
- Les packages dont le système d’exploitation cible le plus élevé est Windows 10 ou une version antérieure.
- Les pilotes ARM64 natifs.
Les soumissions sont bloquées par défaut pour WHQL comme pour Attestation, et deviennent un examen manuel avec un document de justification joint. Même lorsque les conditions s’appliquent, rien ne garantit que le constructeur soumette ni que Microsoft approuve.5 De plus, pouvoir obtenir un pilote signé et pouvoir l’utiliser dans un environnement où WPP est activé sont deux choses distinctes. La préparation pour les imprimantes d’étiquettes et de tickets est traitée au chapitre 6.
flowchart TB
accTitle: Conditions dans lesquelles la signature des pilotes reste autorisée après le 15 janvier 2026
accDescr: Les soumissions de pilotes par les constructeurs sont bloquées par défaut, et seules celles qui remplissent l'une des trois conditions, imprimantes qui ne peuvent pas obtenir la certification Mopria, packages dont la cible la plus élevée est Windows 10 ou une version antérieure, et pilotes ARM64 natifs, peuvent soumettre une exception pour un examen au cas par cas, qui peut conduire à une approbation mais ne garantit pas la signature
submit["Soumission de pilote par le constructeur"]
submit --> block["Bloquée par défaut"]
block --> c1["Modèle qui ne peut pas obtenir la certification Mopria"]
block --> c2["Windows 10 ou version antérieure comme cible la plus élevée"]
block --> c3["ARM64 natif"]
c1 --> apply["Une exception peut être demandée"]
c2 --> apply
c3 --> apply
apply --> review["Examen au cas par cas"]
review --> maybe["Peut être approuvé (sans garantie)"]
Figure 4 : remplir les conditions ne fait qu’entrer le pilote en examen ; la signature n’est pas garantie.
3. Fonctionnement — Le chemin de pilote traditionnel et Windows Ready Print
3.1 Ce qui change, c’est le chemin d’impression au-delà de l’API de dessin
Dans l’impression Windows traditionnelle, l’application émet des commandes de dessin GDI ou XPS, le spouleur reçoit le travail, et le pilote d’imprimante le convertit dans le langage de l’imprimante (PDL) et l’envoie. Le chemin d’impression GDI comme le chemin d’impression XPS reposent sur cette structure.6
flowchart TB
accTitle: Le chemin de pilote traditionnel
accDescr: Le spouleur qui s'exécute en SYSTEM met en file les commandes de dessin GDI ou XPS de l'application métier, et un pilote v3 ou v4 tiers les convertit en un PDL propriétaire et les envoie à l'imprimante, dans le processus du spouleur lui-même sans isolation de pilote, ou dans un processus distinct du spouleur en mode partagé ou isolé
app["Application métier (GDI / XPS)"] --> spooler["Spouleur (privilèges SYSTEM)"]
spooler --> iso{"Isolation de pilote"}
iso -->|"Aucune"| inproc["Pilote tiers dans le processus du spouleur"]
iso -->|"Shared / Isolated"| host["Pilote tiers dans un processus distinct"]
inproc --> pdl["Conversion en PDL propriétaire"]
host --> pdl
pdl --> printer["Imprimante"]
Figure 5 : sur le chemin traditionnel, le processus diffère selon l’isolation, mais la structure dans laquelle du code tiers à l’intérieur de la pile d’impression gère la conversion en PDL est la même.
Son successeur est Windows Ready Print. C’est le nom collectif de l’impression via IPP (Internet Printing Protocol), de la numérisation via eSCL et d’Universal Print, et il n’exige aucun pilote tiers. Il est conçu pour les imprimantes certifiées Mopria, et l’indépendance vis-à-vis de l’architecture du processeur est un autre avantage.7
Windows 10 21H2 et versions ultérieures sont livrés avec le Microsoft IPP Class Driver, qui gère les imprimantes conformes Mopria en réseau comme en USB.1 Les files cloud d’Universal Print utilisent le Universal Print Class Driver fourni avec le système.8
flowchart TB
accTitle: Le chemin Windows Ready Print
accDescr: Le spouleur reçoit les commandes de dessin de l'application métier, et soit le Microsoft IPP Class Driver fourni avec le système rend en PWG Raster ou PDF sur le client et l'envoie en IPP à une imprimante certifiée Mopria, soit le Universal Print Class Driver fourni avec le système l'envoie en IPP over HTTPS au service Universal Print ; Windows protected print mode n'autorise que ce chemin Windows Ready Print
app["Application métier (GDI / XPS)"] --> spooler["Spouleur"]
spooler --> ipp["Microsoft IPP Class Driver"]
ipp --> render["Rendu en PWG Raster / PDF"]
render --> printer["Imprimante certifiée Mopria (IPP)"]
spooler --> up["Universal Print Class Driver"]
up --> cloud["Service Universal Print (IPP over HTTPS)"]
wpp["Windows protected print mode"] -.->|"n'autorise que le chemin Ready Print"| ipp
wpp -.-> up
Figure 6 : Windows Ready Print passe aussi par le spouleur. Ce qui change, c’est que la conversion et l’envoi passent d’un pilote tiers aux pilotes de classe fournis avec le système.
IPP est un protocole fondé sur HTTP, et il identifie une imprimante par un URI tel que ipps://printer.example.com/ipp/print. Les PDL utilisés pour l’impression sans pilote se limitent à quelques formats fondés sur des normes publiques, comme PWG Raster et PDF, et le document final est rendu côté client.9 Avec Universal Print, le spouleur envoie le travail au service en IPP over HTTPS.8
Le point d’entrée vu depuis l’application ne change pas. Une application qui dessine avec GDI ou XPS appelle les mêmes API. Ce qui change, c’est le mécanisme au-delà qui renvoie la liste des formats de papier et des bacs, fournit les fonctions propriétaires et convertit en PDL. C’est pourquoi les applications qui dépendent des informations renvoyées par un pilote ou de paramètres propriétaires sont plus touchées que celles qui ne font que dessiner. Pour les fonctions propres au constructeur, vérifiez aussi si elles sont fournies par une Print Support App (PSA).10
3.2 Vérifier séparément l’impression, le fax et la numérisation sur les appareils multifonctions
La possibilité pour un appareil de passer à Windows Ready Print dépend de la présence de la fonction sur l’appareil et de l’implémentation du protocole correspondant.1
| Fonction | Prise en charge requise pour une connexion réseau | Condition supplémentaire pour une connexion USB |
|---|---|---|
| Impression | IPP | Mode IPP over USB |
| Envoi de fax | IPP Fax Out | Mode IPP over USB |
| Numérisation | eSCL ou WS-Scan | Mode IPP over USB |
Ne concluez pas, de la seule prise en charge d’impression Mopria, que le fax et la numérisation peuvent aussi migrer.
flowchart TB
accTitle: Ordre de vérification séparée de chaque fonction d'un appareil multifonction
accDescr: Prenez les fonctions utilisées une par une, vérifiez dans l'ordre que l'appareil a la fonction, qu'il prend en charge le protocole du tableau, et qu'il est en mode IPP over USB en connexion USB, et vérifiez les fonctions restantes séparément au lieu de réutiliser le résultat d'impression pour le fax ou la numérisation
start["Choisir une fonction utilisée"]
start --> feature{"L'appareil a-t-il la fonction ?"}
feature -->|"Oui"| protocol{"Prend en charge le protocole du tableau ?"}
feature -->|"Non"| unmet["Condition de cette fonction non remplie"]
protocol -->|"Oui"| usb{"Connexion USB ?"}
protocol -->|"Non"| unmet
usb -->|"Oui"| mode{"Mode IPP over USB ?"}
usb -->|"Non"| checked["Condition de cette fonction vérifiée"]
mode -->|"Oui"| checked
mode -->|"Non"| unmet
checked --> next["Vérifier les fonctions restantes séparément"]
unmet --> next
Figure 7 : vérifiez dans l’ordre disponibilité de la fonction, protocole pris en charge et condition supplémentaire selon le type de connexion. Ne réutilisez pas le résultat d’impression pour le fax ou la numérisation.
3.3 L’arrière-plan, c’est la sécurité de la pile d’impression
Selon l’explication de Microsoft Learn, les bogues liés à l’impression représentaient 9 % des cas du MSRC (Microsoft Security Response Center) recensés sur les trois années précédentes. Le spouleur s’exécute avec des privilèges SYSTEM, est largement joignable depuis les utilisateurs standard et charge à la demande du code tiers. Certains anciens pilotes sont incompatibles avec des atténuations modernes telles que CFG et CET, ce qui rend difficile d’appliquer des atténuations qui exigent que chaque morceau de code participant les prenne en charge.9
flowchart TB
accTitle: Pourquoi les atténuations ne peuvent pas prendre effet tant que des pilotes tiers sont chargés
accDescr: Le spouleur qui s'exécute en SYSTEM charge du code tiers, et parce que les anciens pilotes sont incompatibles avec des atténuations telles que CFG et CET, les atténuations qui exigent le soutien de chaque participant ne peuvent pas s'appliquer au spouleur, ce qui rend les vulnérabilités plus faciles à exploiter
sys["Le spouleur s'exécute en SYSTEM"]
load["Charge du code tiers à la demande"]
old["Les anciens pilotes sont incompatibles avec les atténuations"]
sys --> risk["Les vulnérabilités sont plus faciles à exploiter"]
load --> nomit["Les atténuations (CFG / CET / ACG) ne peuvent pas s'appliquer"]
old --> nomit
nomit --> risk
Figure 8 : les atténuations ne prennent effet que lorsque chaque participant les prend en charge, donc le spouleur ne peut pas être pleinement protégé tant que les pilotes ne sont pas retirés.
L’endroit où s’exécute un pilote tiers dépend du paramètre d’isolation des pilotes d’imprimante.11
| Mode d’isolation | Où le pilote s’exécute |
|---|---|
| None | Dans le processus du spouleur lui-même |
| Shared | Dans un processus distinct du spouleur, partagé avec d’autres pilotes |
| Isolated | Dans un processus distinct dédié à ce pilote |
Un pilote qui déclare DriverIsolation=2 dans son INF utilise par défaut le processus partagé, et un pilote qui ne le déclare pas s’exécute par défaut dans le processus du spouleur. Les administrateurs peuvent le remplacer depuis la console Gestion de l’impression ou par stratégie de groupe. Dans chaque mode, toutefois, du code tiers s’exécute encore à l’intérieur de la pile d’impression.11 WPP est le mode de fonctionnement qui retire cette dépendance au code tiers.
flowchart TB
accTitle: Comment se décide le processus dans lequel s'exécute un pilote tiers
accDescr: Un pilote qui déclare DriverIsolation=2 dans son INF s'exécute par défaut dans un processus partagé distinct du spouleur, un pilote sans la déclaration s'exécute par défaut dans le processus du spouleur, et les administrateurs peuvent le remplacer depuis la console Gestion de l'impression ou par stratégie de groupe vers partagé, dans le processus du spouleur, ou un processus dédié distinct (isolé)
inf{"L'INF déclare DriverIsolation=2"}
inf -->|"Oui"| shared["S'exécute dans un processus partagé distinct (par défaut)"]
inf -->|"Non"| inproc["S'exécute dans le processus du spouleur (par défaut)"]
admin["Remplacé par les paramètres ou la stratégie de l'administrateur"] -.-> shared
admin -.-> inproc
admin -.-> isolated["S'exécute dans un processus dédié distinct (isolé)"]
Figure 9 : le mode d’isolation se décide par la déclaration INF et les paramètres d’administrateur ; les anciens pilotes sans la déclaration s’exécutent par défaut dans le processus du spouleur.
4. Ce qui disparaît sous Windows protected print mode
4.1 WPP est un mode de fonctionnement qui « n’utilise que Windows Ready Print »
WPP a été introduit dans Windows 11 24H2. Au moment de la rédaction, il est désactivé par défaut, et tant qu’il est désactivé, il n’impose aucune restriction à l’installation des pilotes ni aux fonctions d’impression.1213 Distinguez la façon de l’activer et qui peut le désactiver.
| Chemin d’activation | Où il se règle | Comment le désactiver |
|---|---|---|
| Application Paramètres | Windows protected print mode sous « Imprimantes et scanners » | Si l’utilisateur l’a activé dans l’application Paramètres, l’utilisateur peut le désactiver dans l’application Paramètres |
| Stratégie de groupe | « Configuration ordinateur > Modèles d’administration > Imprimantes > Configure Windows protected print » | Un administrateur change la stratégie |
| Intune | OMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint |
Un administrateur change la stratégie |
Lorsqu’il est activé par stratégie de groupe, l’utilisateur ne peut pas le désactiver sans s’adresser à un administrateur. L’OMA-URI Intune est un autre chemin qui applique la même stratégie d’appareil adossée à ADMX. Partez du principe que l’utilisateur ne peut le désactiver depuis l’écran Paramètres que lorsque l’utilisateur l’a activé depuis l’écran Paramètres.14213
flowchart TB
accTitle: Trois chemins d'activation de Windows protected print mode
accDescr: Windows protected print mode peut s'activer depuis l'application Paramètres, la stratégie de groupe ou un OMA-URI Intune ; l'utilisateur ne peut le désactiver dans l'application Paramètres que lorsqu'il l'a activé là, et lorsqu'il a été déployé par stratégie de groupe ou stratégie Intune, il ne peut pas se désactiver sans que l'administrateur change la stratégie
s["Application Paramètres (activé par l'utilisateur)"] --> wpp["Windows protected print mode activé"]
g["Stratégie de groupe"] --> wpp
i["Intune (OMA-URI)"] --> wpp
s -.->|"l'utilisateur peut le désactiver dans l'application Paramètres"| off["Désactivé"]
g -.->|"l'utilisateur ne peut pas le désactiver"| adm["Le désactiver exige un changement de stratégie par l'administrateur"]
i -.->|"l'utilisateur ne peut pas le désactiver"| adm
Figure 10 : il y a trois chemins d’activation, et l’utilisateur ne peut le désactiver que lorsqu’il l’a activé depuis l’application Paramètres.
4.2 Files qui survivent, files qui disparaissent et files à réenregistrer
L’effet au moment de l’activation dépend non seulement de l’imprimante elle-même, mais aussi du pilote avec lequel elle est actuellement enregistrée.2
| Destination d’impression actuelle | Lorsque WPP est activé | Comment se préparer |
|---|---|---|
| Imprimante physique enregistrée avec un pilote tiers (v3/v4) | La file est désinstallée et le pilote est aussi retiré du magasin de pilotes | Réenregistrer les modèles compatibles avec Windows Ready Print. Pour les modèles incompatibles, choisir un autre chemin ou décider de ne pas utiliser WPP |
| Imprimante enregistrée avec un pilote constructeur, même si elle est certifiée Mopria | Elle est retirée une fois. La certification ne signifie pas que la file existante survit | Vérifier l’activation et la joignabilité d’IPP pour les connexions réseau, ou le mode IPP over USB pour USB, et réenregistrer |
| Imprimante compatible déjà enregistrée avec Windows Ready Print | Continue de fonctionner | Vérifier les capacités, les paramètres et la sortie réelle |
| File cloud Universal Print | Se situe du côté compatible WPP en tant que partie de Windows Ready Print | Vérifier les dépendances au nom de file et la sortie réelle |
| Imprimante logicielle non prise en charge | Retirée | Pour les imprimantes PDF tierces et assimilées, vérifier la prise en charge WPP du produit. Faire tendre l’archivage des rapports vers une génération directe avec une bibliothèque PDF |
| Imprimante virtuelle mise à jour pour la prise en charge WPP | N’est pas traitée comme les produits non pris en charge. OneNote a une Protected virtual printer | Vérifier de quel type sont le produit et la file utilisés |
| Microsoft XPS Document Writer, l’imprimante virtuelle de fax | Retirés | Après avoir désactivé WPP, réinstaller XPS manuellement depuis « Fonctionnalités Windows » et le fax depuis la fonctionnalité facultative « Windows Fax et numérisation » |
flowchart TB
accTitle: Ce qui arrive aux imprimantes lorsque Windows protected print mode est activé
accDescr: À l'activation, les imprimantes installées avec des pilotes tiers et les imprimantes virtuelles non prises en charge, le XPS Document Writer et l'imprimante virtuelle de fax sont retirés ; les modèles certifiés Mopria et, pour les connexions réseau, dont IPP est activé et joignable ou, pour les connexions USB, qui sont en mode IPP over USB peuvent être réenregistrés avec Windows Ready Print, et les appareils non pris en charge ne peuvent pas s'utiliser tant que le mode est activé
on["WPP activé"]
on --> third["Imprimantes sur pilotes tiers retirées"]
on --> soft["Imprimantes virtuelles non prises en charge retirées"]
soft --> xps["XPS Document Writer et fax aussi retirés"]
third --> mopria{"Certifiée Mopria ?"}
mopria -->|"Oui"| conn{"Type de connexion"}
conn -->|"Réseau"| ipp{"IPP activé et joignable ?"}
conn -->|"USB"| usb{"Mode IPP over USB ?"}
ipp -->|"Oui"| re["Réenregistrer avec Windows Ready Print"]
usb -->|"Oui"| re
ipp -->|"Non"| no["Inutilisable tant que le mode est activé"]
usb -->|"Non"| no
mopria -->|"Non"| no
Figure 11 : une file sur un pilote constructeur disparaît une fois même si l’imprimante est certifiée Mopria. Vérifiez séparément les conditions de réenregistrement.
Tant que WPP est activé, les pilotes tiers retirés ne peuvent pas s’utiliser. De plus, désactiver WPP ne ramène pas automatiquement une imprimante réinstallée avec Windows Ready Print à son pilote d’origine.210
Côté application, les points à vérifier sont le traitement qui suppose les formats de papier, les bacs et les fonctions propriétaires qu’un pilote constructeur renvoie, les imprimantes virtuelles de type DLL de moniteur de port, et le XPS Document Writer. Générer des fichiers XPS directement avec XpsDocument et assimilés est différent d’imprimer vers la file virtuelle appelée XPS Document Writer, et n’est pas touché par ce retrait.
4.3 L’administration et l’intérieur du spouleur changent aussi
Sous WPP, les binaires tiers tels que les DLL de moniteur de port ne sont plus chargés. Les API de chargement de modules telles que AddPrintProvidorW ne peuvent plus charger de nouveaux modules, et seuls les binaires signés par Microsoft nécessaires à IPP sont chargés. AddPrintProvidorW est l’orthographe historique dans winspool.h ; l’explication de Microsoft Learn l’écrit AddPrintProviderW.9
Cette restriction permet au rendu XPS de s’exécuter avec des privilèges utilisateur au lieu de SYSTEM, et le nouveau processus de travail du spouleur utilise un jeton restreint auquel des privilèges tels que SeTcbPrivilege ont été retirés. La création de processus enfants est interdite, et CFG, CET et ACG sont également activés.9
flowchart TB
accTitle: Changements du spouleur sous Windows protected print mode
accDescr: Ne plus charger de binaires tiers permet de restreindre le chargement de modules, de rendre XPS avec des privilèges utilisateur, d'exécuter les processus de travail avec un jeton restreint, d'interdire la création de processus enfants et d'activer CFG, CET et ACG
nodrv["Les binaires tiers ne sont pas chargés"]
nodrv --> r["Chargement restreint"]
nodrv --> l["Privilèges réduits"]
nodrv --> m["Atténuations activées"]
r --> r2["Binaires signés par Microsoft uniquement"]
l --> l2["XPS en privilèges utilisateur, jeton restreint"]
m --> m2["Pas de processus enfants, CFG / CET / ACG"]
Figure 12 : les atténuations qui ne pouvaient pas prendre effet à la figure 8 ne peuvent s’activer qu’une fois les binaires tiers retirés.
Point and Print conserve sa configuration IPP mais n’installe plus de pilotes tiers. Les procédures de provisionnement fondées sur l’hypothèse que « se connecter au serveur d’impression distribue le pilote » doivent aussi être revues.9
On peut vérifier si WPP est actuellement activé avec l’API WinRT Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo.IsProtectedPrintEnabled à partir de Windows 11 24H2.15 Le paramètre de stratégie de groupe est la valeur WindowsProtectedPrintGroupPolicyState sous HKLM\Software\Policies\Microsoft\Windows NT\Printers\WPP.13
Notez qu’un client avec WPP activé ne peut pas gérer un serveur d’impression avec WPP désactivé depuis Gestion de l’impression. Fournissez aux administrateurs un client d’administration distinct avec WPP désactivé.14
5. Inventaire des applications existantes — Les quatre endroits à examiner
flowchart TB
accTitle: Les quatre endroits à inventorier dans une application métier
accDescr: Dans le code d'impression d'une application métier, les quatre endroits, enregistrement des paramètres propres au pilote, dépendances aux noms de file (y compris à l'intérieur des SDK et des bibliothèques), dépendances aux imprimantes virtuelles non prises en charge par WPP, et envoi RAW vers des files qui ne survivent pas à WPP, sont des objets de reprise, et le code qui ne fait que dessiner est un objet de vérification
app["Code d'impression de l'application métier"]
app --> deps["Inventorier les quatre dépendances"]
app --> d0["Dessin uniquement"]
deps --> d1["Enregistrement des paramètres propres au pilote"]
deps --> d2["Dépendance aux noms de file"]
deps --> d3["Dépendance aux imprimantes virtuelles"]
deps --> d4["Envoi RAW"]
d2 -.-> d2n["Y compris à l'intérieur des SDK"]
d3 -.-> d3n["Celles que WPP ne prend pas en charge"]
d4 -.-> d4n["Vers des files qui ne survivent pas"]
d1 --> fix["Reprendre"]
d2 --> fix
d3 --> fix
d4 --> fix
d0 --> verify["Vérifier"]
Figure 13 : seules les quatre dépendances sont des objets de reprise ; le code qui ne fait que dessiner va à la vérification.
5.1 Dresser d’abord la liste des pilotes sur le terrain et juger la destination d’impression
La nécessité d’une reprise se décide après avoir vu ce qui est installé sur le terrain. Dressez la liste des files et des pilotes avec le module PowerShell PrintManagement. Lister avec Get-Printer et Get-PrinterDriver n’exige pas de droits d’administrateur, mais l’étape pnputil de la seconde moitié oui.1617
# Pour chaque file, lister le nom du pilote, la version majeure (3 = v3, 4 = v4), le fabricant et le nom de fichier 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
# Énumérer uniquement les packages de pilotes tiers, avec le nom publié (oemN.inf), le nom INF d'origine et le fournisseur (droits d'administrateur requis)
pnputil /enum-drivers /class Printer
MajorVersion distingue v3 de v4.18 Toutefois, la distinction v3/v4 et la distinction fourni avec le système / tiers sont distinctes. Classez comme suit.
| Catégorie | Comment le reconnaître | Ce qu’il faut vérifier ensuite |
|---|---|---|
| File sur le pilote de classe IPP | DriverName est Microsoft IPP Class Driver |
Certification Mopria, activation et joignabilité d’IPP sur le réseau, mode IPP over USB pour USB. Ne pas décider de la compatibilité WPP d’après le nom seul |
| File Universal Print | Utilise le Universal Print Class Driver fourni avec le système8 | Traiter comme le côté compatible WPP et vérifier les dépendances de l’application au nom de file et la sortie |
| File sur un autre pilote fourni avec le système | Ni un nom de pilote de classe connu, ni dans la liste des packages tiers | XPS et fax sont retirés. Ne pas supposer que Generic / Text Only et assimilés survivent. Microsoft Print to PDF n’est pas listé pour le retrait, donc juger file par file |
| File sur un pilote constructeur | Recouper le nom de fichier INF et le fournisseur avec la liste des packages tiers de pnputil |
Candidat au remplacement de pilote. Sous WPP, la file existante disparaît, donc vérifier si l’appareil physique peut être réenregistré |
InfPath de Get-PrinterDriver est le chemin vers l’INF dans le magasin de pilotes et n’est pas garanti de renvoyer le nom publié oemN.inf. Recoupez le nom publié, le nom INF d’origine et le fournisseur renvoyés par pnputil /enum-drivers avec le nom de fichier de InfPath et Manufacturer. pnputil /enum-drivers ne liste que les packages tiers ; les packages fournis avec le système n’apparaissent pas dans la liste.1917
flowchart TB
accTitle: Procédure d'inventaire des imprimantes sur le terrain
accDescr: Dresser la liste des files et des pilotes avec PowerShell, et par DriverName et en recoupant Manufacturer avec la liste des packages tiers de pnputil les répartir en files sur le pilote de classe IPP, files Universal Print (compatibles WPP), files sur d'autres pilotes fournis avec le système (XPS et fax retirés, Generic / Text Only ne peut pas être supposé survivre, Microsoft Print to PDF n'est pas listé pour le retrait donc jugé individuellement) et files sur pilotes constructeur (candidats au remplacement) ; pour les files sur le pilote de classe IPP confirmer séparément la certification Mopria, IPP activé et joignable pour les connexions réseau, et le mode IPP over USB pour les connexions USB, puis recouper chaque file avec les files vers lesquelles pointent les paramètres et le code d'impression de l'application
list["Dresser la liste avec Get-Printer / Get-PrinterDriver"]
list --> cls{"DriverName et fournisseur"}
cls -->|"IPP Class"| ipp["File sur le pilote de classe IPP"]
cls -->|"Universal Print Class"| up["File Universal Print"]
cls -->|"Autre fourni avec le système"| inbox["Juger individuellement avec le tableau du chapitre 4"]
cls -->|"Constructeur"| vendor["Candidat au remplacement"]
ipp --> mop["Vérifier Mopria, joignabilité IPP, USB"]
mop --> match["Recouper avec les paramètres et le code de l'application"]
up --> match
inbox --> match
vendor --> match
match --> judge["Trier avec le tableau de décision"]
Figure 14 : dresser la liste et trier par nom n’exige pas de droits d’administrateur ; recouper le fournisseur exige des droits d’administrateur pour pnputil.
Recoupez cette liste avec les files auxquelles renvoient les paramètres de l’application, le code d’impression et les SDK qu’elle utilise. Si vous consignez le pilote, la certification Mopria, le type de connexion, la joignabilité IPP et le mode de fonctionnement USB pour chaque site client, vous pouvez juger avec le tableau du chapitre 4.
Si la destination d’impression ne survit pas à WPP et ne peut pas être réenregistrée, fournissez le chemin de substitution du chapitre 6 ou décidez de ne pas utiliser WPP avant d’inventorier le code. Si l’appareil peut être touché par le changement de classement IPP même sans WPP, poursuivez à partir de 5.2. Si vous n’utilisez pas WPP et que le remplacement de pilote n’a pas d’effet, la décision est de continuer à fonctionner sur le chemin actuel.
Pour vérifier le nom du pilote depuis l’application, lisez PrintQueue.QueueDriver.Name avec System.Printing de WPF.20
using System.Printing;
// Depuis un outil d'administration ou une application de bureau, lister le nom de pilote de chaque file
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}");
}
Toutefois, l’espace de noms System.Printing ne prend pas en charge l’utilisation dans un service Windows. Si vous imprimez depuis un service résident, placez ce diagnostic dans l’outil d’administration.21 Pour les contraintes de l’impression depuis un service, voir Comment créer et exploiter un service Windows et le chapitre 7 de l’article précédent.
5.2 Contrôle 1 : des paramètres propres au pilote sont-ils enregistrés et restaurés ?
Le plus difficile à trouver, ce sont les paramètres d’impression enregistrés. La raison pour laquelle ils se cassent diffère selon la façon dont ils sont enregistrés.
| Ce qui est enregistré | Implémentation typique | Pourquoi cela se casse lorsque le pilote change |
|---|---|---|
La partie privée de DEVMODE |
Enregistrer le résultat de DocumentProperties ou le tampon de GetHdevmode en entier, et restaurer avec SetHdevmode |
Les données privées ne peuvent être interprétées que par ce pilote |
L’ensemble du PrinterSettings de .NET Framework |
Sérialiser en binaire l’objet après la boîte de dialogue d’impression | La zone privée du pilote copiée en interne peut aussi être enregistrée |
| Valeurs de propriétés publiques | Enregistrer PaperSize, PaperSource, PrinterResolution, Duplex et assimilés dans un format personnalisé |
Pas un tampon privé, mais le sens du papier personnalisé et des numéros de bac et assimilés change |
Un PrintTicket avec des extensions privées |
Enregistrer du XML contenant un espace de noms propre au constructeur | Les extensions propriétaires dépendent du pilote ou du modèle d’origine |
DEVMODE peut porter des données privées après ses membres publics, dont la taille est donnée par dmDriverExtra. Windows ne valide que la partie publique, et des données privées corrompues peuvent faire planter le pilote dans le processus de l’application ou du spouleur.22
flowchart TB
accTitle: Les parties publique et privée de DEVMODE
accDescr: La structure DEVMODE porte après ses membres publics des données privées définies par le pilote indiquées par dmDriverExtra ; seule la partie publique est validée par Windows et la partie privée ne peut être interprétée que par ce pilote, de sorte que l'enregistrer en entier perd son sens lorsque le pilote change
dm["Structure DEVMODE"]
dm --> pub["Partie publique (dmSize)"]
dm --> priv["Partie privée (dmDriverExtra)"]
pub --> chk["Validée par Windows"]
priv --> only["Interprétée uniquement par ce pilote"]
only --> lost["Perd son sens lorsque le pilote change"]
Figure 15 : d’un paramètre enregistré en entier, la partie qui se casse est la partie privée.
Un PrinterSettings qui a reçu ses paramètres par SetHdevmode copie cette zone privée en interne.23 La version .NET Framework de PrinterSettings a l’attribut Serializable, et la sérialisation binaire inclut les champs privés par défaut, donc enregistrer l’objet entier emporte la même dépendance.2425
La version .NET de PrinterSettings, en revanche, n’a pas l’attribut Serializable, et une implémentation qui enregistre les propriétés publiques une par une dans son propre format n’enregistre ni le tampon natif DEVMODE ni la zone dmDriverExtra.24 Ce qu’il faut surveiller dans ce cas, ce sont les valeurs dépendantes du pilote.
flowchart TB
accTitle: Enregistrer DEVMODE et enregistrer des valeurs managées se cassent différemment
accDescr: Une implémentation qui enregistre le tampon DEVMODE en entier et une qui sérialise un PrinterSettings en entier après avoir reçu la zone privée par SetHdevmode emportent la partie privée et perdent leur sens lorsque le pilote change ; une implémentation qui enregistre des valeurs de propriétés publiques emporte des numéros de papier et de bac Custom ou propres au constructeur qui sont des valeurs par rapport à la liste du pilote constructeur et ne sont pas garanties de signifier la même chose sous le pilote de classe IPP ; les deux sont remplacées par une conception qui n'enregistre que l'intention
a["Enregistrer DEVMODE en entier"]
a --> a1["Emporte la partie privée"]
s["Enregistrer en entier après SetHdevmode"] --> a1
a1 --> a2["Perd son sens lorsque le pilote change"]
b["Enregistrer les valeurs de propriétés publiques"]
b --> b1["Emporte les numéros de papier et de bac personnalisés"]
b1 --> b2["Pas de garantie du même sens sur le nouveau pilote"]
a2 --> c["Les deux passent à n'enregistrer que l'intention"]
b2 --> c
Figure 16 : enregistrer l’objet entier après SetHdevmode tombe du côté de la partie privée ; les modes de défaillance diffèrent, mais les deux emportent l’état du pilote.
Si RawKind représente un PaperKind ou un PaperSourceKind standard, il conserve son sens lorsque le pilote change. Ce qui n’est pas garanti, c’est que Custom ou des numéros propres au constructeur pointent vers le même papier ou le même bac sur un autre pilote. Ne traitez pas les valeurs standard comme se cassant toutes.2627
flowchart TB
accTitle: Quelles valeurs de papier et de bac enregistrées se cassent
accDescr: Parmi les valeurs RawKind, celles qui correspondent à des formats de papier standard (PaperKind) tels que A4 ou à des sources de papier standard (PaperSourceKind) telles que Upper et Lower conservent leur sens lorsque le pilote change, tandis que Custom et les valeurs propres au constructeur sont des numéros par rapport à la liste du pilote constructeur et le pilote de classe IPP n'est pas garanti de les interpréter comme le même papier ou le même bac
raw["RawKind enregistré"]
raw --> std["Valeurs standard (PaperKind etc.)"]
raw --> cus["Custom et valeurs propres au constructeur"]
std --> keep["Conserve son sens lorsque le pilote change"]
cus --> lost["Pas de garantie du même papier ou du même bac"]
Figure 17 : ce qui se casse, ce ne sont pas les valeurs standard, mais les valeurs personnalisées par rapport à la liste du pilote constructeur.
Un PrintTicket définit aussi ses mots-clés publics dans l’espace de noms psk mais peut contenir des extensions privées propres à l’appareil. La règle est que les éléments tiers appartiennent à un espace de noms clairement associé à ce tiers. Si un espace de noms constructeur apparaît dans le XML enregistré, examinez-le comme un paramètre propre au pilote.2829
Remède : n’enregistrer que « l’intention »
Conservez l’intention, c’est-à-dire le choix du format de papier, de l’orientation, du duplex, des copies et du bac, dans votre propre fichier de paramètres en mots-clés publics. Au lieu de faire suivre l’état interne du pilote, recoupez-le avec les capacités actuelles juste avant l’impression.
En WPF, obtenez les capacités avec PrintQueue.GetPrintCapabilities, exprimez la demande comme un PrintTicket et passez-le à MergeAndValidatePrintTicket.30 Ce qu’il faut surveiller ici, c’est qu’une demande non prise en charge ne produit pas nécessairement une erreur. Le pilote peut résoudre le conflit et renvoyer un ticket valide, généralement avec le paramètre remplacé par une valeur par défaut ou assimilée.
Si ValidationResult.ConflictStatus vaut ConflictResolved, comparez le duplex et le bac dans ValidatedPrintTicket avec la demande, consignez l’écart et notifiez l’utilisateur.31
flowchart TB
accTitle: Une conception qui n'enregistre que l'intention et la recoupe avec les capacités juste avant l'impression
accDescr: Le fichier de paramètres ne contient que l'intention pour le papier, l'orientation, le duplex, les copies et le bac en mots-clés publics ; juste avant l'impression, obtenir les capacités de l'imprimante actuelle avec GetPrintCapabilities, passer par MergeAndValidatePrintTicket, imprimer tel quel si ConflictStatus est NoConflict, et s'il est ConflictResolved comparer les éléments remplacés avec la demande et les envoyer au journal et à une notification
cfg["Fichier de paramètres : intention uniquement (papier, orientation, duplex, copies)"]
cfg --> caps["GetPrintCapabilities juste avant l'impression"]
caps --> merge["MergeAndValidatePrintTicket"]
merge --> st{"ConflictStatus"}
st -->|"NoConflict"| print["Imprimer"]
st -->|"ConflictResolved"| tell["Consigner et notifier l'écart par rapport à la demande"]
Figure 18 : enregistrez l’intention des paramètres et validez-la par rapport aux capacités actuelles au moment de l’impression. N’utilisez pas silencieusement un paramètre remplacé ; vérifiez l’écart.
En WinForms, resélectionnez le papier depuis PrinterSettings.PaperSizes par Kind ou par dimensions plutôt que par nom. Les sources de papier de PaperSources peuvent être réutilisées lorsqu’elles sont des valeurs standard uniques telles que Upper ou Lower, mais plusieurs bacs propriétaires peuvent revenir regroupés en PaperSourceKind.Custom. Et PaperSource ne porte pas de dimensions de papier. N’identifiez pas un bac propriétaire par Kind seul ; soit remappez-le explicitement aux capacités actuelles, soit faites choisir à nouveau l’utilisateur.27
5.3 Contrôle 2 : y a-t-il une dépendance aux noms d’imprimante ou de file ?
L’article précédent recommandait de conserver le nom d’imprimante dans un fichier de paramètres. Ce qui s’ajoute ici, c’est le postulat qu’il n’est pas garanti qu’une file du même nom soit créée après un remplacement de pilote ou une redétection. Un paramètre qui pointe vers l’ancien nom de file perd sa destination d’impression tel quel.
Les endroits à vérifier sont trois : le fichier de paramètres, les noms codés en dur dans le code, et l’intérieur des SDK et des bibliothèques de rapports. Même lorsque votre propre code n’a pas de nom fixe, un SDK constructeur peut appeler en interne une file ou un pilote particuliers. Recoupez la documentation du SDK avec la liste de 5.1.
flowchart TB
accTitle: Trois endroits où une dépendance au nom de file peut se cacher
accDescr: Une dépendance au nom de file peut se cacher à trois endroits, un nom fixe dans le fichier de paramètres, un nom fixe codé en dur dans le code, et la file ou le pilote qu'un SDK constructeur ou une bibliothèque de rapports appelle en interne ; les deux premiers se trouvent en cherchant dans le code et les paramètres, le dernier par la documentation du SDK et la liste de 5.1
dep["Dépendance aux noms de file"]
dep --> cfg["Nom fixe dans le fichier de paramètres"]
dep --> code["Nom fixe codé en dur dans le code"]
dep --> sdk["Fixe à l'intérieur du SDK ou de la bibliothèque"]
cfg --> grep["Trouver en cherchant dans le code et les paramètres"]
code --> grep
sdk --> doc["Confirmer avec la documentation du SDK et la liste de 5.1"]
Figure 19 : même lorsque votre propre code n’a pas de nom de file, une dépendance peut rester à l’intérieur d’un SDK ou d’une bibliothèque.
Le remède est de vérifier au démarrage que le nom configuré existe dans PrinterSettings.InstalledPrinters, et s’il n’est pas trouvé, de le consigner et de notifier l’utilisateur. Rendez aussi possible de resélectionner la destination d’impression depuis l’écran de paramètres.
Ne basculez pas silencieusement vers l’imprimante par défaut. Cela dissimule un bon qui sort de l’imprimante d’un autre service comme une impression normale.
flowchart TB
accTitle: Validation du nom d'imprimante au démarrage
accDescr: Au démarrage, vérifier si le nom d'imprimante du fichier de paramètres existe dans InstalledPrinters ; s'il existe, imprimer ; sinon, consigner, notifier l'utilisateur et le faire choisir à nouveau, et ne pas basculer silencieusement vers l'imprimante par défaut
start["Démarrage : nom d'imprimante des paramètres"]
start --> exists{"Existe dans InstalledPrinters ?"}
exists -->|"Oui"| print["Imprimer vers cette file"]
exists -->|"Non"| log["Consigner et notifier l'utilisateur"]
log --> pick["Choisir à nouveau sur l'écran de paramètres"]
exists -.->|"ne pas faire ceci"| silent["Basculer silencieusement vers l'imprimante par défaut"]
Figure 20 : une implémentation qui imprime silencieusement vers une autre imprimante lorsque la destination n’est pas trouvée crée la défaillance qui met le plus longtemps à se découvrir.
5.4 Contrôle 3 : une imprimante virtuelle sert-elle à générer des fichiers ?
Une archive de rapports qui imprime vers une imprimante PDF tierce et surveille le dossier de sortie, ou un traitement qui crée des fichiers intermédiaires avec le XPS Document Writer, cesse de fonctionner lorsque la file qu’il utilise est retirée par WPP.
Toutefois, ce qui est retiré, ce sont les imprimantes logicielles non prises en charge par WPP. Ne confondez pas les produits non pris en charge tels que ceux de type DLL de moniteur de port avec les produits mis à jour pour la prise en charge WPP, tels que OneNote. L’étape 3 du chapitre 7 confirme si la file que vous utilisez réellement est une cible de retrait.2
Si ce que vous voulez est un PDF, alors, comme l’explique le chapitre 5 de l’article précédent, passer à une configuration qui le génère directement avec une bibliothèque PDF est la conception la moins dépendante des changements de la pile d’impression.
5.5 Contrôle 4 : l’envoi RAW passe-t-il par une file que WPP retire ?
L’envoi RAW est la méthode qui pousse des données en langage d’imprimante à travers le spouleur avec OpenPrinter → StartDocPrinter (type de données « RAW ») → WritePrinter → EndDocPrinter. Le document doit décrire entièrement les paramètres d’impression dans le langage du matériel, et les paramètres DEVMODE ne sont pas utilisés.3233
C’est l’approche standard pour les étiquettes et les tickets, mais l’envoi RAW n’est pas une « communication directe qui contourne le spouleur ». Même si le pilote n’est effectivement utilisé que comme un passage vers le port, ce passage est perdu lorsque WPP retire la file.
flowchart TB
accTitle: Le chemin d'envoi RAW et l'endroit où WPP le retire
accDescr: L'application pousse des données en langage d'imprimante dans le spouleur avec OpenPrinter, StartDocPrinter et WritePrinter, et une file qui ne survit pas à WPP (par exemple une file sur un pilote constructeur) sert de passage vers le port puis vers l'imprimante, de sorte que lorsque WPP retire cette file le passage disparaît
app["Application : StartDocPrinter (RAW), WritePrinter"]
app --> spooler["Spouleur"]
spooler --> queue["File qui ne survit pas à WPP (passage)"]
queue --> port["Port"]
port --> printer["Imprimante d'étiquettes ou de tickets"]
wpp["WPP activé"] -.->|"la file disparaît"| queue
Figure 21 : l’envoi RAW n’utilise le pilote que comme un passage, mais le passage lui-même disparaît.
Ce qu’il faut vérifier, c’est à quelle combinaison de file, de pilote et de port vous envoyez. Non seulement les files sur pilotes constructeur, mais aussi les pilotes fournis avec le système pour des imprimantes physiques autres que le pilote de classe IPP, tels que Generic / Text Only, ne peuvent pas être supposés survivre. Tout ce qui est confirmé comme disparaissant dans la liste de retrait du chapitre 7 a besoin d’un autre chemin de la même façon.13
De plus, Microsoft Learn n’indique pas qu’un PDL propriétaire peut être envoyé en RAW vers une file sur le pilote de classe IPP. Parce que cela dépend des PDL que l’implémentation IPP de l’imprimante accepte, ne concluez pas que « passer à IPP laisse passer les mêmes données RAW ».
6. Une issue de secours pour les imprimantes d’étiquettes et de tickets
KomuraSoft recommande d’avoir au moins un chemin de sortie pour les étiquettes et les tickets qui ne dépend pas du spouleur.
Même lorsqu’une imprimante entre dans l’exception de signature du chapitre 2, la poursuite de l’offre du pilote constructeur et son utilisation sous WPP ne sont pas garanties.1 Le guide de dépannage de Microsoft consigne aussi un cas dans lequel des imprimantes de tickets et d’étiquettes connectées en USB ont cessé d’imprimer après une mise à jour de 2021 et le problème a été résolu par un Known Issue Rollback.34 Connaître vos chemins de sortie séparément, c’est la préparation.
| Chemin | Dépend du spouleur | Situations adaptées et précautions |
|---|---|---|
| SDK constructeur qui parle à l’appareil directement en TCP, USB ou série | Non | Pour les modèles dont le constructeur maintient le SDK sur le long terme. Suivre la bitness du SDK, les runtimes dépendants et les mises à jour de signature |
| SDK constructeur qui appelle en interne une file Windows ou un pilote | Oui | Même conservé comme un actif existant, il s’arrête lorsque la file interne est retirée par WPP. Ce n’est pas une issue de secours indépendante du spouleur |
| Envoyer le langage d’imprimante directement par une socket TCP | Non | Pour les imprimantes d’étiquettes connectées au réseau. Concevoir la déconnexion, la retransmission et les délais d’attente |
| Envoyer directement en série (COM virtuel) ou USB | Non | Pour les imprimantes de tickets et les appareils installés à côté d’équipements de mesure. Exige de choisir entre COM virtuel, HID et WinUSB |
| Imprimer via le pilote de classe IPP (IPP / IPP over USB) | Oui ; compatible WPP si les conditions sont remplies | Vérifier la certification Mopria, l’activation et la joignabilité d’IPP sur le réseau, et le mode de fonctionnement USB. Pas un chemin qui quitte le spouleur |
Pour la conception de reconnexion TCP, le raisonnement de Pièges des applications de communication série s’applique. Pour le choix d’une méthode USB, voir Comment gérer les périphériques USB dans une application Windows. IPP est désactivé par défaut sur certaines imprimantes et doit être activé.4
Le nom « SDK » seul ne dit pas si un chemin est indépendant. Servez-vous de la documentation du SDK et de la liste de 5.1 pour confirmer s’il parle à l’appareil directement ou finit par appeler une file Windows.
Lorsqu’une file Windows est utilisée, Universal Print se situe du côté compatible WPP, mais passe aussi par le spouleur. Une file qui n’est ni le pilote de classe IPP ni Universal Print s’arrête sous WPP si c’est un pilote tiers, XPS ou fax, et une file fournie avec le système non listée pour le retrait, telle que Microsoft Print to PDF, se juge individuellement. « Compatible WPP » et « indépendant du spouleur » sont des classifications distinctes.
flowchart TB
accTitle: Flux pour décider si un chemin de sortie dépend du spouleur
accDescr: Si le chemin candidat envoie vers une file d'impression Windows, alors une file sur le pilote de classe IPP dont l'imprimante est certifiée Mopria et, pour les connexions réseau, a IPP activé et joignable ou, pour les connexions USB, est en mode IPP over USB, et une file Universal Print en tant que partie de Windows Ready Print, dépendent du spouleur mais sont compatibles WPP ; les files sur des appareils non certifiés Mopria ou des pilotes tiers, et les files retirées selon le tableau du chapitre 4 telles que le XPS Document Writer et le fax, peuvent s'arrêter sous WPP ; les files fournies avec le système non listées pour le retrait telles que Microsoft Print to PDF se jugent individuellement comme en 5.1 ; s'il n'envoie pas vers une file, un SDK qui appelle en interne une file ou un pilote revient au même jugement, tandis qu'un SDK qui ne le fait pas ou un chemin qui envoie directement à l'appareil est une issue de secours qui ne dépend pas du spouleur
route["Chemin de sortie candidat"]
route --> q1{"Envoie vers une file d'impression Windows ?"}
q1 -->|"Oui"| q4{"File sur le pilote de classe IPP ?"}
q4 -->|"Oui"| q5{"Certifiée Mopria ?"}
q5 -->|"Oui"| q9{"IPP joignable ? (USB : over USB)"}
q9 -->|"Oui"| depok["Dépend, mais compatible WPP"]
q9 -->|"Non"| dep["Dépend, et peut s'arrêter sous WPP"]
q5 -->|"Non"| dep
q4 -->|"Non"| q6{"File Universal Print ?"}
q6 -->|"Oui"| depok
q6 -->|"Non"| q7{"Retirée selon le tableau du chapitre 4 ?"}
q7 -->|"Oui (pilote tiers, XPS, fax)"| dep
q7 -->|"Non (Print to PDF etc.)"| indiv["Juger individuellement (5.1)"]
q1 -->|"Non"| q2{"Passe par un SDK constructeur ?"}
q2 -->|"Oui"| q3{"Appelle une file ou un pilote en interne ?"}
chk["Vérifier : documentation du SDK et liste de 5.1"] -.-> q3
q3 -->|"Oui"| q4
q3 -->|"Non"| indep["Issue de secours sans dépendance"]
q2 -->|"Non"| indep
Figure 22 : tout se ramène à la file par laquelle le chemin passe en dernier ; hormis une file sur le pilote de classe IPP pour un appareil certifié Mopria et une file Universal Print, tout sauf les files fournies avec le système non listées pour le retrait peut s’arrêter sous WPP.
7. Procédure de vérification — Avec et sans WPP
Confirmez d’abord la branche de la vérification selon que vous utilisez WPP ou non. Dans les deux cas, conservez la sortie d’avant le changement et vérifiez avec les destinations d’impression que vous utilisez réellement.
flowchart TB
accTitle: Procédure de vérification d'impression selon que WPP est utilisé
accDescr: Reproduire toutes les files sur une machine de test et enregistrer la sortie d'avant le changement ; si WPP est utilisé, l'activer, consigner les files retirées, comparer la sortie après réenregistrement des appareils compatibles, et vérifier le chemin de substitution pour les appareils incompatibles ; s'il n'est pas utilisé, redétecter les appareils physiques soumis au changement de classement IPP avec WPP désactivé et comparer la sortie, et pour tout le reste confirmer l'impression sur les files réelles
prepare["Reproduire et consigner toutes les files"]
prepare --> baseline["Enregistrer les résultats d'impression d'avant le changement"]
baseline --> use{"Utiliser WPP ?"}
use -->|"Oui"| enable["Activer et consigner les files retirées"]
enable --> compatible["Réenregistrer les appareils compatibles au besoin"]
compatible --> compare["Comparer avec les mêmes impressions qu'auparavant"]
enable --> alternate["Vérifier les appareils incompatibles sur le chemin de substitution"]
use -->|"Non"| physical{"Appareil physique soumis au changement de classement IPP ?"}
physical -->|"Oui"| redetect["Retirer et redétecter avec WPP désactivé"]
redetect --> compare
physical -->|"Non"| existing["Confirmer l'impression sur les files réelles"]
compare --> finish["Consigner les résultats et restaurer la machine de test"]
alternate --> finish
existing --> finish
Figure 23 : la sortie d’avant le changement est la base commune, et seuls les environnements qui utilisent WPP l’activent. Les environnements qui ne l’utilisent pas vérifient le changement de classement IPP et l’impression sur les files réelles.
7.1 Préparation commune : reproduire chaque destination d’impression sur une machine de test, pas en production
Utilisez un PC sous Windows 11 24H2 ou version ultérieure pour la vérification, et ne le faites pas sur un PC de production. Pour les connexions réseau, une machine virtuelle qui peut joindre les mêmes imprimantes suffit. Pour évaluer le réenregistrement USB ou la communication directe, utilisez une machine de test physique, sauf si la machine virtuelle peut faire transiter la même interface USB.
Que WPP soit utilisé ou non, les étapes 1 et 2 ci-dessous préservent l’état d’avant le changement.
- Reproduire chaque file que l’application utilise sur le terrain. Installez non seulement les imprimantes physiques sur pilotes constructeur, mais aussi les imprimantes virtuelles PDF tierces et les files fournies avec le système telles que
Generic / Text Only, dans la même configuration. Consignez les noms et versions de pilotes avec le script de 5.1. Le différentiel de retrait ne peut juger que les files qui existent sur la machine de test. - Parcourir les fonctions d’impression et enregistrer la sortie. Vérifiez les écrans de paramètres de papier, bac, duplex et copies, l’impression de chaque rapport, la sortie PDF et l’impression d’étiquettes, pour créer une base de comparaison ultérieure.
flowchart TB
accTitle: Files à reproduire sur la machine de test
accDescr: Parmi les files que l'application utilise d'après l'inventaire de 5.1, reproduire les imprimantes physiques sur pilotes constructeur, les imprimantes virtuelles telles que PDF tierce, et les files sur pilotes fournis avec le système telles que Generic / Text Only, toutes sur la machine de test dans la même configuration que sur le terrain, montrant que la liste de retrait de l'étape 3 ne peut juger que les files qui existent sur la machine de test
inv["Inventaire 5.1 : files que l'application utilise"]
inv --> phys["Imprimantes physiques (pilotes constructeur)"]
inv --> virt["Imprimantes virtuelles (PDF tierce etc.)"]
inv --> inbox["Pilotes fournis avec le système (Generic / Text Only etc.)"]
phys --> vm["Reproduire sur la machine de test dans la même configuration"]
virt --> vm
inbox --> vm
vm --> judge["Juger la survie avec la liste de retrait de l'étape 3"]
note["Les files manquantes n'apparaissent pas dans le différentiel de retrait"] -.-> judge
Figure 24 : une file absente de la machine de test n’apparaît pas dans le différentiel de retrait ; reproduisez donc d’abord chaque file trouvée par l’inventaire.
7.2 Environnements qui utilisent WPP : l’activer et vérifier, y compris les destinations d’impression disparues
Après les étapes 1 et 2, procédez dans l’ordre suivant.
- Activer WPP et consigner les files qui sont retirées. Choisir « Configurer » sous « Windows protected print mode » dans « Imprimantes et scanners » de l’application Paramètres affiche les cibles de retrait dans une boîte de dialogue.2 Lors de l’activation par stratégie de groupe, aucune boîte de dialogue n’apparaît ; enregistrez donc le résultat de
Get-Printeravant d’appliquer la stratégie et redémarrez la machine de test après l’avoir appliquée. Confirmez l’activation avecIsProtectedPrintEnabledou l’écran Paramètres, dressez à nouveau la liste et consignez le différentiel.14 - Réinstaller les imprimantes compatibles retirées. Réinstallez-les avec Windows Ready Print et confirmez avec le script de 5.1 que le
DriverNamede l’imprimante physique est devenu Microsoft IPP Class Driver. - Répéter les mêmes impressions et comparer avec l’état d’avant le changement. Vérifiez les choix sur les écrans de paramètres, la restauration des paramètres enregistrés et la perte de destinations d’impression due aux changements de nom de file. Recoupez aussi les marges, les polices et les filets de la sortie avec la sortie de l’étape 2.
- Imprimer les appareils incompatibles par le chemin de substitution du chapitre 6. Reproduisez l’état dans lequel « l’imprimante n’est pas dans la liste » et confirmez que la sortie fonctionne encore. Non seulement le code que vous avez corrigé, mais aussi le chemin que vous avez fourni, est un objet de vérification.
7.3 Environnements qui n’utilisent pas WPP : vérifier le changement de sélection de pilote sans l’activer
Dans un environnement où vous avez décidé de ne pas utiliser WPP, n’exécutez pas les étapes 3 et 4. Activer WPP retire des files entières, ce qui masque l’effet du classement seul.
| Destination d’impression | Que faire après les étapes 1 et 2 |
|---|---|
| Appareil physique compatible IPP soumis au changement de classement | Avec WPP désactivé, le retirer, le redétecter et le réinstaller sur la machine de test. Confirmer avec le script de 5.1 s’il passe au pilote de classe IPP, et effectuer la comparaison de l’étape 5 |
| Files cloud et virtuelles | Il n’y a pas d’appareil physique à redétecter ni de changement de classement, donc confirmer la sortie de l’étape 2 sur les files réellement utilisées |
7.4 Restaurer après la vérification et préparer la procédure de provisionnement
Une machine de test sur laquelle WPP a été activé dans l’application Paramètres locale peut se restaurer avec « Désactiver ». S’il a été appliqué depuis la stratégie de groupe ou Intune, un changement de stratégie côté administrateur est requis ; préparez donc une procédure de restauration qui correspond au chemin d’activation.213
Désactiver WPP laisse les imprimantes réinstallées avec Windows Ready Print telles quelles. Les imprimantes qui étaient incompatibles se réinstallent manuellement.210
Pour le provisionnement, intégrez la stratégie WPP et la procédure de réenregistrement des imprimantes dans le mécanisme de distribution exposé dans De la stratégie de groupe à Intune. La distribution de pilotes tiers par Point and Print exige par défaut des informations d’identification d’administrateur depuis KB5005652 en 2021,34 et sous WPP la distribution elle-même n’a plus lieu.9 Dans les environnements qui utilisent WPP, remplacez les procédures qui dépendent de la distribution de pilotes par cette application de stratégie et cette procédure de réenregistrement.
flowchart TB
accTitle: Révision de la procédure de provisionnement
accDescr: La procédure qui distribuait des pilotes tiers par Point and Print est abandonnée parce que des informations d'identification d'administrateur sont exigées depuis 2021 et que sous WPP la distribution elle-même n'a plus lieu, et à sa place la stratégie WPP (stratégie de groupe ou OMA-URI) et la procédure de réenregistrement des imprimantes sont intégrées au mécanisme de distribution
old["Distribuer des pilotes tiers par Point and Print"]
old --> why1["Informations d'identification d'administrateur exigées depuis 2021"]
old --> why2["Aucune distribution du tout sous WPP"]
why1 --> drop["Retirer de la procédure"]
why2 --> drop
drop --> add["Intégrer la stratégie WPP et la procédure de réenregistrement"]
Figure 25 : la procédure de distribution des pilotes est remplacée par une procédure de distribution de la stratégie WPP et de réenregistrement des imprimantes.
8. Synthèse
La réponse requise se décide dans l’ordre « la destination d’impression survit-elle ? » → « de quoi le code dépend-il ? » → « dans quelles conditions vérifions-nous ? ».
| Constat | Réponse |
|---|---|
| La file ne survit pas à WPP et l’imprimante physique ne peut pas être réenregistrée | Fournir d’abord un autre chemin ou décider de ne pas utiliser WPP |
| Des paramètres propres au pilote sont enregistrés | Enregistrer l’intention plutôt que l’état, et vérifier les capacités juste avant l’impression |
| Dépend des noms de file ou des imprimantes virtuelles | Fournir des contrôles d’existence, une consignation, une notification et une resélection de la destination d’impression. Générer les PDF directement avec une bibliothèque |
| Le passage de l’envoi RAW disparaît sous WPP | Fournir un chemin qui ne dépend pas du spouleur |
| La destination d’impression est assurée, et l’application ne fait que dessiner sans dépendre d’un pilote particulier | Ne pas réécrire d’un seul coup ; vérifier la sortie réelle |
Corriger une chose n’est pas la fin. Après avoir corrigé les paramètres, passez aux noms de file, aux imprimantes virtuelles et à l’envoi RAW, et confirmez enfin la sortie comme au chapitre 7. Sur les appareils où le changement de classement IPP peut se produire même sans WPP, vous avez besoin de l’inventaire des dépendances et de la vérification par redétection avec WPP laissé désactivé.
flowchart TB
accTitle: Arbre de décision pour corriger ou seulement vérifier
accDescr: D'abord décider si la file de destination survit à WPP (une file cloud Universal Print ou une imprimante virtuelle prise en charge par WPP) ou si l'imprimante physique peut être réenregistrée avec Windows Ready Print ; sinon, choisir entre fournir un autre chemin et ne pas utiliser WPP ; si l'appareil prend en charge IPP et peut être remplacé par le changement de classement, vérifier dans l'ordre l'enregistrement des paramètres propres au pilote, les dépendances aux noms de file ou aux imprimantes virtuelles (y compris à l'intérieur des SDK et des bibliothèques), et l'envoi RAW, en corrigeant chacun qui s'applique avant de continuer ; enfin, les environnements qui utilisent WPP vont à la vérification avec WPP activé du chapitre 7, ceux qui ne l'utilisent pas envoient les appareils physiques compatibles IPP à la vérification par redétection avec WPP désactivé et les files cloud ou virtuelles aux contrôles de sortie réelle, et si WPP n'est pas utilisé et que le remplacement n'a pas d'effet, continuer à fonctionner sur le chemin actuel
q0{"La file survit-elle à WPP ou peut-elle être réenregistrée ?"}
q0 -->|"Non"| alt{"Que faire"}
alt -->|"Fournir un autre chemin"| qi{"Prend en charge IPP et peut être remplacé ?"}
alt -->|"Ne pas utiliser WPP"| qi2{"Prend en charge IPP et peut être remplacé ?"}
qi -->|"Oui"| q1{"Des paramètres propres au pilote sont-ils enregistrés ?"}
qi -->|"Non"| verify["Vérifier seulement (chapitre 7)"]
qi2 -->|"Oui"| q1
qi2 -->|"Non"| keep["Continuer à fonctionner sur le chemin actuel"]
q0 -->|"Oui"| q1
q1 -->|"Oui"| fix1["Corriger (5.2)"]
fix1 --> q2{"Dépend des noms de file ou des imprimantes virtuelles ?"}
sdk["Y compris les dépendances à l'intérieur des SDK et des bibliothèques"] -.-> q2
q1 -->|"Non"| q2
q2 -->|"Oui"| fix2["Corriger (5.3, 5.4)"]
fix2 --> q3{"Envoie du RAW vers une file qui ne survit pas à WPP ?"}
q2 -->|"Non"| q3
q3 -->|"Oui"| fix3["Fournir un passage (chapitre 6)"]
fix3 --> vq{"Utiliser WPP ?"}
q3 -->|"Non"| vq
vq -->|"Oui"| verify
vq -->|"Non"| pq{"Appareil physique compatible IPP ?"}
pq -->|"Oui"| redetect["Vérification par redétection sans WPP (7.3)"]
pq -->|"Non"| outchk["Confirmer la sortie sur les files réelles"]
Figure 26 : décidez d’abord si la file survit à WPP ; pour les dépendances du code, passez au contrôle suivant même après en avoir corrigé une, et vérifiez le chemin corrigé à la fin. Si WPP n’est pas utilisé, ne vérifiez pas avec l’activation WPP du chapitre 7, mais en redétectant les appareils physiques compatibles IPP avec WPP désactivé et par la sortie réelle sur les files cloud et virtuelles.
Placer l’échéance de préparation sur votre propre plan de déploiement, pas sur les dates de Microsoft
WPP est dit devoir devenir activé par défaut à l’avenir, mais aucune date n’est donnée.10 Placez l’échéance de préparation avant d’activer WPP vous-même, ou avant de déployer la mise à jour de fonctionnalités Windows 11 24H2 ou ultérieure sur le terrain. Le 1er juillet 2027 est un jalon côté offre des pilotes, pas une échéance pour les applications métier.1
flowchart TB
accTitle: Où placer l'échéance de préparation côté application métier
accDescr: Dresser la liste et inventorier maintenant, terminer les changements de chemin et la vérification d'ici votre propre échéance, c'est-à-dire avant d'activer WPP vous-même ou avant de déployer la mise à jour de fonctionnalités 24H2 ou ultérieure ; l'arrêt des mises à jour de pilotes le 1er juillet 2027 est un jalon côté offre, pas l'échéance de préparation, et l'objectif est d'atteindre un état non affecté par l'activation par défaut de WPP, dont le moment est indéterminé, quand elle survient
now["Maintenant : dresser la liste et inventorier"]
now --> prep["Changements de chemin et vérification"]
prep --> deadline["Échéance : avant d'activer WPP vous-même / avant de déployer la mise à jour de fonctionnalités"]
deadline --> fine["Non affecté lorsque WPP devient activé par défaut (moment indéterminé)"]
ms["1er juillet 2027 : les mises à jour de pilotes s'arrêtent"] -.->|"jalon côté offre, pas une échéance"| prep
Figure 27 : placez l’échéance sur votre propre plan de déploiement, et ne faites pas des dates jalons de Microsoft votre coupure.
Commencez par dresser la liste sur chaque site client et comprendre les dépendances aux paramètres, aux destinations d’impression et aux chemins de sortie. Générez les PDF directement, et conservez pour les étiquettes et les tickets un chemin indépendant de la pile d’impression. Vérifiez ensuite l’impression dans les conditions réelles de déploiement.
Les environnements qui restent sous Windows 10 sont hors du champ de ce plan, mais le support de Windows 10 (22H2) sur le canal régulier s’est terminé en octobre 2025. Enterprise LTSC et IoT Enterprise LTSC ont des dates de fin différentes selon l’édition ; vérifiez le cycle de vie. Pour les décisions impliquant ESU et LTSC, voir La solution pragmatique après la fin du support de Windows 10, et pour les PC industriels, Quel Windows installer sur un PC industriel ?. La préparation de l’impression n’est pas achevée tant que vous n’avez pas refait la vérification du chapitre 7 sur le Windows 11 vers lequel vous migrez.
Articles connexes
- Impression et sortie PDF dans les applications métier Windows — choisir entre System.Drawing.Printing, WPF et bibliothèques de rapports
- Comment créer une sortie de rapports Excel - COM / Open XML / Modèles
- Comment créer et exploiter un service Windows — du choix entre Planificateur de tâches et service à la transformation d’un BackgroundService en service Windows
- Comment gérer les périphériques USB dans une application Windows — Choisir entre COM virtuel, HID, WinUSB et SDK dédié
- Pièges des applications de communication série — de la reconnexion à la conception des journaux
- De la stratégie de groupe à Intune — Un guide de migration de la gestion des appareils pour les PME
- La solution pragmatique après la fin du support de Windows 10 — Tableau de décision ESU, LTSC et renouvellement de matériel
Domaines de conseil connexes
KomuraSoft LLC prend en charge l’inventaire des dépendances aux pilotes d’imprimante des applications métier qui impriment des rapports et des étiquettes, la reprise des chemins d’impression (génération PDF directe, contrôle direct des imprimantes d’étiquettes) et la conception de plans de vérification qui supposent Windows protected print mode.
Références
-
Microsoft Learn, End of servicing plan for third-party printer drivers on Windows. Sur la chronologie mise à jour en mai 2025 (15 janvier 2026, 1er juillet 2026 et 1er juillet 2027), le champ d’application étant Windows 11 et versions ultérieures et Windows Server 2025 et versions ultérieures, les pilotes existants restant installables sans plan de désactivation des fonctionnalités v3/v4, les trois conditions d’exception de signature (pas de certification Mopria, Windows 10 ou version antérieure comme cible la plus élevée, ARM64 natif), les appareils USB ne pouvant utiliser chaque fonction qu’en mode IPP over USB, et le Microsoft IPP Class Driver fourni avec Windows 10 21H2 et versions ultérieures. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn, Overview of Windows protected print mode. Sur les imprimantes utilisant des pilotes tiers qui sont désinstallées et retirées du magasin de pilotes à l’activation, les imprimantes installées avec un pilote tiers nécessitant une réinstallation même lorsqu’elles sont certifiées Mopria, les imprimantes logicielles non prises en charge (telles que OneNote (Desktop)), XPS et le fax étant retirés, les utilisateurs ne pouvant pas le désactiver lorsqu’il est activé par stratégie de groupe, et la procédure d’activation et de désactivation depuis l’application Paramètres. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
Microsoft Learn, Step 2: A Driver Package for the Device is Selected. Sur Windows qui classe chaque package lorsque plusieurs packages de pilotes correspondent et installe celui au meilleur rang, et choisit par date et version en cas d’égalité de rang. ↩
-
Microsoft Learn, IPP printers with the Universal Print Connector. Sur le Microsoft IPP Class Driver étant le pilote fourni avec le système qui communique avec les imprimantes certifiées Mopria en IPP, et IPP étant désactivé par défaut sur certaines imprimantes et devant être activé. ↩ ↩2
-
Microsoft Learn, Legacy printer driver submission process. Sur les soumissions de pilotes d’imprimante, WHQL ou Attestation, bloquées par défaut après le 15 janvier 2026 et devenant un examen manuel avec un document de justification joint. ↩
-
Microsoft Learn, Windows Print Path Overview. Sur Windows ayant deux chemins d’impression principaux, le chemin d’impression GDI et le chemin d’impression XPS. ↩
-
Microsoft Learn, Discover Windows Ready Print. Sur Windows Ready Print étant le nom qui couvre IPP, eSCL et Universal Print, n’exigeant aucun pilote tiers, étant conçu pour les imprimantes certifiées Mopria, et étant indépendant de l’architecture du PC. ↩
-
Microsoft Learn, Universal Print troubleshooting - Understanding the stages of a print job. Sur les imprimantes Universal Print utilisant le pilote de classe Universal Print fourni avec le système, et le spouleur envoyant les travaux au service en IPP over HTTPS. ↩ ↩2 ↩3
-
Microsoft Learn, More information on Windows protected print mode for enterprises and developers. Sur les bogues d’impression représentant 9 % des cas MSRC des trois années précédentes, le spouleur s’exécutant en SYSTEM et chargeant du code tiers, les anciens pilotes étant incompatibles avec CFG/CET/ACG, IPP étant fondé sur HTTP POST et identifié par URI avec quelques PDL tels que PWG Raster et PDF rendus sur le client, les restrictions de chargement de modules, le rendu XPS en privilèges utilisateur, le jeton restreint, l’interdiction de création de processus enfants et les atténuations binaires sous WPP, et Point and Print n’installant plus de pilotes tiers. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, Windows protected print mode FAQ. Sur les imprimantes incompatibles qui ne peuvent pas se réinstaller tant qu’il est activé et qui nécessitent une réinstallation manuelle après sa désactivation, les fonctions propriétaires fournies par une Print Support App, et Windows protected print mode devenant activé par défaut à un moment futur. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Printer driver isolation. Sur le sens des modes d’isolation (Shared / Isolated / None), les pilotes qui ne déclarent pas le mot-clé INF
DriverIsolations’exécutant par défaut dans le processus du spouleur, et les administrateurs pouvant remplacer le paramètre de chaque pilote depuis la console Gestion de l’impression ou les fonctions du spouleur. ↩ ↩2 -
Microsoft Learn, What’s new in Windows 11, version 24H2. Sur Windows protected print mode ajouté dans 24H2 et activé depuis l’application Paramètres ou la stratégie de groupe. ↩
-
Microsoft Learn, Policy CSP - Printers: ConfigureWindowsProtectedPrint. Sur le système d’exploitation applicable étant Windows 11 24H2 et versions ultérieures, le mode étant désactivé par défaut sans restriction sur les pilotes ni les fonctions d’impression, et la clé de Registre mappée ADMX
Software\Policies\Microsoft\Windows NT\Printers\WPPet la valeurWindowsProtectedPrintGroupPolicyState. ↩ ↩2 ↩3 ↩4 ↩5 -
Microsoft Learn, Windows protected print mode for enterprises. Sur la procédure d’activation avec la stratégie de groupe « Configure Windows protected print », l’OMA-URI Intune, et un client avec WPP activé ne pouvant pas gérer un serveur avec WPP désactivé depuis Gestion de l’impression. ↩ ↩2 ↩3
-
Microsoft Learn, WindowsProtectedPrintInfo.IsProtectedPrintEnabled Property. Sur la propriété statique introduite dans Windows 11 24H2 qui indique si WPP est activé sur l’appareil actuel. ↩
-
Microsoft Learn, Get-PrinterDriver. Sur le renvoi de la liste des pilotes d’imprimante de l’ordinateur spécifié sans exiger d’informations d’identification d’administrateur. ↩
-
Microsoft Learn, PnPUtil Command Syntax. Sur
/enum-driversénumérant les packages de pilotes tiers,/classrestreignant par nom de classe à partir de Windows 11 21H2, et l’exécution depuis une invite de commandes ouverte en tant qu’administrateur. ↩ ↩2 -
Microsoft Learn, How to display printer status in a UWP device app. Sur la procédure pour distinguer v3 de v4 avec
get-printer | Select Name, {(get-printerdriver -Name $_.DriverName).MajorVersion}. ↩ -
Microsoft Learn, PnPUtil. Sur les packages fournis avec le système exclus lors de l’énumération des packages du magasin de pilotes, de sorte que seuls les packages non inbox sont listés. ↩
-
Microsoft Learn, PrintQueue.QueueDriver Property. Sur la récupération du pilote d’imprimante qu’une file utilise comme
PrintDriver. ↩ -
Microsoft Learn, PrintServer Class. Sur les classes de l’espace de noms
System.Printingnon prises en charge pour une utilisation dans un service Windows ou une application ASP.NET, où elles peuvent provoquer une baisse de performances ou des exceptions d’exécution. ↩ -
Microsoft Learn, DEVMODEW structure (wingdi.h). Sur les membres privés définis par le pilote autorisés immédiatement après les membres publics, dont la taille est donnée par
dmDriverExtra, et Windows ne validant que la partie publique, de sorte que des données corrompues dans la partie privée peuvent faire planter le pilote. ↩ -
dotnet/winforms (GitHub), PrinterSettings.cs. Sur
SetHdevmodecopiant en interne les octetsdmDriverExtrade la zone privée etGetHdevmodeles réécrivant, et aucun autre chemin ne détenant la zone privée. ↩ -
Microsoft Learn, PrinterSettings Class. Sur la déclaration .NET Framework portant l’attribut
Serializableet la déclaration .NET non, etGetHdevmodeetSetHdevmodeconvertissant vers et depuisDEVMODE. ↩ ↩2 -
Microsoft Learn, SerializableAttribute Class. Sur tous les champs, privés et publics, étant sérialisés par défaut dans un type marqué de l’attribut
Serializable, et l’attributNonSerializedservant à les exclure. ↩ -
Microsoft Learn, PaperSize.RawKind Property. Sur
RawKindétant un entier qui représente une valeur de type de papier standard ou une valeur personnalisée. ↩ -
Microsoft Learn, PaperSourceKind Enum. Sur
Custom, représentant une source de papier propre à l’imprimante, étant défini en plus des types de source de papier standard tels queUpperetLower. ↩ ↩2 -
Microsoft Learn, Print Schema. Sur le Print Schema autorisant des extensions tierces et les éléments Property privés devant appartenir à un espace de noms clairement associé à ce tiers. ↩
-
Microsoft Learn, Print Schema-Related Technologies. Sur le PrintTicket étant le successeur de
DEVMODE, et les PrintTickets propres à l’appareil pouvant contenir des extensions privées pour des modèles particuliers. ↩ -
Microsoft Learn, How to: Validate and Merge PrintTickets. Sur la procédure consistant à vérifier les fonctions prises en charge de l’imprimante avec
PrintQueue.GetPrintCapabilitieset à fusionner et valider la demande en unPrintTicketvalide propre à l’imprimante avecMergeAndValidatePrintTicket. ↩ -
Microsoft Learn, ConflictStatus Enum. Sur
MergeAndValidatePrintTicketfaisant remplacer par le pilote les paramètres non pris en charge et renvoyer un ticket valide, et signalant qu’un remplacement a eu lieu parConflictResolveddansValidationResult.ConflictStatus. ↩ -
Microsoft Learn, WritePrinter function. Sur la procédure de
StartDocPrinteràEndDocPrinter, le document devant décrire entièrement les paramètres équivalents àDEVMODEdans le langage du matériel lorsque le type de données est « RAW », etWritePrinterétant une fonction bloquante qui peut faire paraître l’application ne plus répondre lorsqu’elle est appelée depuis le thread d’interface. ↩ -
Microsoft Learn, RAW data type. Sur les données RAW envoyées au moniteur d’impression sans traitement supplémentaire, avec un fichier constitué de commandes PCL comme exemple. ↩
-
Microsoft Learn, Printing issue troubleshooting guidance. Sur le changement du comportement par défaut de Point and Print depuis KB5005652 qui exige des informations d’identification d’administrateur, et le cas dans lequel des imprimantes de tickets et d’étiquettes connectées en USB ont cessé d’imprimer après une mise à jour de 2021 et le problème a été résolu par un Known Issue Rollback. ↩ ↩2
Articles associés
Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.
Impression et sortie PDF dans les applications métier Windows — choisir entre System.Drawing.Printing, WPF et bibliothèques de rapports
Organise l'impression WinForms avec PrintDocument, l'impression WPF FlowDocument/FixedDocument et les options de sortie PDF dans une tabl...
Icônes de la zone de notification et notifications toast dans les applications Windows — les pièges de NotifyIcon et comment choisir la bonne AppNotification
Un guide pratique pour maintenir une application Windows métier résidente dans la zone de notification (system tray) et avertir l'utilisa...
Intégrer l'authentification Entra ID dans une application WinForms/WPF — Architecture pratique avec MSAL.NET et le broker WAM
Guide pratique pour intégrer l'authentification Entra ID (ex Azure AD) dans une application de bureau WinForms/WPF : la logique du client...
CI/CD pratique pour les applications WinForms / WPF — Automatiser du build à la signature et à la distribution avec GitHub Actions
Guide pratique pour mettre en place le CI/CD des applications WinForms / WPF avec GitHub Actions. Couvre un YAML minimal de build+tests s...
Internationalisation des applications WinForms/WPF : resx, assemblies satellites et changement de culture en pratique
Un guide pratique pour internationaliser une application de bureau Windows : la différence entre CurrentCulture et CurrentUICulture, le f...
Sujets associés
Ces pages replacent le sujet dans un contexte plus large de services et de décisions.
Thèmes techniques Windows
Portail des sujets sur le développement Windows, l'analyse des incidents et la valorisation des actifs existants.
Thread UI et minuteries
Thread UI WPF / WinForms, flux asynchrones, Dispatcher et temporisation.
Services liés à ce sujet
Cet article est directement lié aux services suivants.
Développement d'applications Windows
L'examen et la reprise des chemins d'impression des applications métier qui impriment des rapports et des étiquettes relèvent du conseil en développement d'applications Windows.
Conseil technique et revue de conception
L'inventaire des dépendances aux pilotes d'imprimante d'une application existante et une revue de conception qui fixe l'ordre de remplacement relèvent du conseil technique.
Questions fréquentes
Questions souvent posées lors d’une consultation sur le sujet de cet article.
- Les imprimantes et les applications qui fonctionnent aujourd'hui cesseront-elles soudain d'imprimer une fois juillet 2026 ou juillet 2027 passé ?
- Non. Le plan de Microsoft est une coupure progressive côté offre : les nouveaux pilotes tiers ne sont plus publiés dans Windows Update, le classement des pilotes privilégie le pilote de classe IPP, et les mises à jour ne sont plus acceptées. Le plan indique explicitement qu'il ne désactive pas les pilotes existants, et les pilotes existants restent installables depuis les programmes d'installation fournis par les constructeurs. Les situations dangereuses sont, sur les appareils auxquels le pilote de classe IPP correspond, le moment où un PC est remplacé ou le système d'exploitation réinstallé et où le pilote est automatiquement remplacé par le pilote de classe IPP, et le moment où Windows protected print mode est activé.
- Windows protected print mode est-il activé par défaut ?
- Au moment de la rédaction (septembre 2026), il est désactivé par défaut et s'active depuis l'application Paramètres, la stratégie de groupe ou Intune. La FAQ de Microsoft indique toutefois clairement qu'il sera activé par défaut à un moment futur. Aucune date n'est donnée ; la préparation consiste à atteindre un état où l'activer ne pose pas de problème avant que cela n'arrive.
- Qu'advient-il des imprimantes d'étiquettes et des imprimantes de tickets ?
- Les imprimantes qui ne peuvent pas obtenir la certification Mopria figurent parmi les conditions dans lesquelles la signature des pilotes reste exceptionnellement autorisée après le 15 janvier 2026. Un pilote constructeur peut donc rester disponible pour un temps, mais dans un environnement où Windows protected print mode est activé, les imprimantes qui utilisent des pilotes tiers sont désinstallées, et on ne peut plus les utiliser telles quelles. Un SDK constructeur qui parle à l'appareil directement en TCP, USB ou série, ou un chemin qui pilote l'imprimante en envoyant directement son langage, vous isole des changements du Print Spooler. Un SDK qui appelle en interne une file Windows ou un pilote s'arrête de la même façon lorsque le pilote tiers disparaît, et n'est donc pas une issue de secours.
- Le code d'impression de l'application peut-il rester sur PrintDocument ?
- Le chemin d'impression GDI et le chemin d'impression XPS restent, et Microsoft indique clairement qu'il n'a pas de plan pour désactiver les fonctionnalités des pilotes v3/v4. Une application qui ne fait que dessiner avec PrintDocument ou FixedDocument est un objet de vérification, pas de correction. Ce qu'il faut corriger, c'est le code qui enregistre et restaure des paramètres propres au pilote (la partie privée de DEVMODE ou un espace de noms privé dans un PrintTicket), le code qui dépend d'un nom de file ou d'un nom d'imprimante virtuelle particuliers (y compris ce qu'un SDK constructeur ou une bibliothèque de rapports appelle en interne), et le code qui envoie des données RAW via le spouleur vers une file qui ne survit pas à WPP (par exemple une file sur un pilote constructeur). Toutefois, si l'imprimante de destination elle-même est un modèle qui ne peut pas être réenregistré avec Windows Ready Print, la file entière disparaît sous Windows protected print mode même lorsque le code ne fait que dessiner, et fournir un autre chemin passe donc en premier.
- Par où commencer ?
- Commencez par dresser la liste des imprimantes et des pilotes sur chaque site client. Get-Printer et Get-PrinterDriver de PowerShell indiquent, sans droits d'administrateur, quelle file utilise quel pilote (v3 ou v4, ou le pilote de classe IPP). Recoupez ensuite cette liste avec les files que l'application nomme explicitement, pour lesquelles elle enregistre des paramètres ou vers lesquelles elle envoie des données RAW, et classez-les en « laisser tel quel », « vérifier » et « changer de chemin » à l'aide du tableau de décision de cet article.
Profil de l’auteur
Page de présentation de l’auteur de l’article.
Go Komura
Représentant de KomuraSoft LLC
Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.