סיום התמיכה ב-printer drivers של Windows — איך אפליקציות עסקיות מתכוננות להדפסת דוחות ותוויות

· עודכן בתאריך: · · Windows, פיתוח Windows, Windows 11, CSharp, .NET, WinForms, WPF, הדפסה, דוחות, Printer Driver, IPP, תפעול, ייעוץ טכני

היסטוריית עדכונים (גרסה ראשונה, פורסמה בתאריך 1 Sep 2026)
פרסום ראשון

“החלפנו את ה-PC ואפשרויות הנייר והמגשים שונות, למרות שזו אותה מדפסת.” “הגדרות ההדפסה השמורות לא חוזרות.” “מדפסת התוויות נעלמה מהרשימה.” להתכונן לסיום התמיכה ב-printer drivers פירושו לוודא ששינויים כאלה לא עוצרים את העסק.

הדבר הראשון להבין הוא ש-תוכנית סיום התמיכה ב-drivers והפעלת Windows protected print mode הם שני דברים שונים. ההדפסה הקיימת לא נעצרת כולה ברגע שתאריכי התוכנית עוברים. מצד שני, כשדרך בחירת ה-driver משתנה, או כש-Windows protected print mode מופעל, ההגדרות ויעדי ההדפסה שהאפליקציה הייתה תלויה בהם אובדים.12

המאמר הזה מיועד למפתחים שמתחזקים אפליקציות עסקיות של Windows ב-WinForms, WPF וכדומה, ולמנהלים שמפרסים מדפסות. הוא עובר על מה משתנה, מה לבדוק, מה לתקן, ואיך לאמת, בסדר הזה. לבחירת API הדפסה או שיטת פלט PDF מלכתחילה, ראו את המאמר הקודם, הדפסה ופלט PDF באפליקציות עסקיות של Windows.

סביבת הבסיס היא Windows 11 (24H2 ואילך לאימות WPP), PowerShell 5.1 ואילך (מודול PrintManagement), ו-C# (.NET 6 ואילך, או .NET Framework 4.x; System.Drawing.Printing / System.Printing). רמת הקושי היא בינונית.

1. קודם המסקנות

במקום לשכתב את כל קוד ההדפסה באופן גורף, קודם מאשרים אם יעד ההדפסה שורד, ואז מתקנים את המקומות שתלויים ב-driver.

סדר ההחלטות הוא שלושה שלבים.

סדר מה לבדוק הפעולה הבאה
1. בודקים את יעד ההדפסה האם התור שורד WPP? האם אפשר לרשום מחדש את המדפסת הפיזית עם Windows Ready Print? אם לא שורד, קודם מספקים נתיב פלט אחר או מחליטים לא להשתמש ב-WPP
2. בודקים את התלויות של האפליקציה האם היא תלויה בהגדרות ספציפיות ל-driver, בשמות תורים, במדפסות וירטואליות, או בשליחת RAW? מתקנים את המקומות שחלים. כוללים תלויות בתוך SDKs וספריות דוחות
3. מאשרים בפלט בפועל האם היא עדיין יכולה להפיק דוחות, PDFs ותוויות נכון כשה-driver או התור משתנים? סביבות שמשתמשות ב-WPP מאמתות כשהוא מופעל; סביבות שלא משתמשות בו מאמתות בהליך אחר

אם האפליקציה מציירת רק עם PrintDocument או FixedDocument, היא עקרונית יעד לאימות, לא לשכתוב. עם זאת, אם תור היעד עצמו נעלם תחת WPP ואי אפשר לרשום אותו מחדש, ההדפסה נכשלת גם כשקוד הציור תקין. נתיב אחר נחוץ קודם.

אם רוצים להתחיל בעבודה עצמה, ממשיכים בסדר הזה: לוקחים את הרשימה ב-5.1 → שופטים את יעד ההדפסה עם הטבלאות בפרק 4 וב-5.1 → בודקים את התלויות ב-5.2 עד 5.5 → בוחרים נתיב בפרק 6 → מאמתים בפרק 7. פרקים 2 עד 4 מסבירים את הרקע לנקודות שבהן ההחלטה אינה מובנת מאליה.

מכאן ואילך, Windows protected print mode מקוצר ל-WPP. “תור” הוא יעד הדפסה שרשום ב-Windows, ו-“spooler” הוא המנגנון שמקבל עבודות הדפסה ומעביר אותן ליעד הפלט.

ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 39, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle

2. מה הוחלט — ציר זמן בשלושה שלבים

2.1 מה שמסתיים הוא אספקה ועדכונים, לא כיבוי גורף של drivers קיימים

המקור העיקרי הוא “End of servicing plan for third-party printer drivers on Windows” ב-Microsoft Learn. התוכנית הוכרזה בספטמבר 2023 והתאריכים שלה עודכנו במאי 2025. נכון לכתיבת המאמר, התוכנית היא כדלקמן.1

תאריך מה משתנה מה אפליקציות עסקיות צריכות לעקוב אחריו
15 בינואר 2026 ב-Windows 11 ואילך וב-Windows Server 2025 ואילך, printer drivers חדשים כבר לא מתפרסמים ב-Windows Update. עדכונים ל-drivers קיימים נשארים אפשריים בסקירה מקרה-מקרה כשמפרסים PCs ומדפסות חדשים, driver של יצרן עשוי כבר לא להיות זמין באותה דרך כמו קודם
1 ביולי 2026 דירוג printer drivers משתנה כך שתמיד יועדף IPP class driver שמגיע עם Windows במכשירים שגם IPP class driver מתאים להם, driver אחר עשוי להיבחר כשמחליפים PC או מזהים מדפסת מחדש
1 ביולי 2027 מלבד תיקוני אבטחה, עדכונים ל-printer drivers של צד שלישי כבר לא מתקבלים לא מבלבלים בין התאריך שבו עדכונים נעצרים לבין המועד האחרון של ההכנה בצד האפליקציה

drivers קיימים עדיין ניתנים להתקנה מ-Windows Update ומ-installers של היצרן, ו-Microsoft אומרת שאין לה תוכנית לבטל פונקציונליות של drivers מסוג v3/v4. כלומר, זו תוכנית להפסיק בהדרגה את אספקת ה-drivers והעדכון שלהם, לא תוכנית לבטל באותו יום את ה-drivers שכבר מותקנים על PCs בשטח.1

מה משתנה ומה לא עם סיום התמיכה ב-driversסיום התמיכה ב-printer drivers לבדו לא משנה לא את נקודת הכניסה של API הציור של האפליקציה ולא את ה-drivers הקיימים; רק כש-driver אחר נבחר בהתקנה חדשה או בזיהוי מחדש מוחלפים רשימת הנייר, היכולות הקנייניות ושם התור שה-driver החזיר, והשינויים שנגרמים מהפעלת Windows protected print mode, כולל הסרת מדפסות וירטואליות, הם מנגנון נפרד שמכוסה בפרק 4סיום התמיכה ב-printer driversמה לא משתנהכש-driver אחר נבחר בהתקנה חדשה או בזיהוי מחדשמה שמוחלףנקודת הכניסה של API הציורdrivers קיימיםנייר, מגשים, יכולות קנייניותשם התור

איור 1: סיום התמיכה לבדו לא משנה דבר; כש-driver אחר נבחר, המידע והשמות שה-driver סיפק מוחלפים. השינויים שנגרמים מהפעלת WPP, כולל הסרת מדפסות וירטואליות, הם מנגנון נפרד (פרק 4).

2.2 drivers משתנים בשטח בעיקר בשני מצבים

גם אם התוכנית לא עוצרת drivers קיימים, הסביבה שהאפליקציה רואה משתנה במצבים הבאים.

מצב מה קורה
החלפת PC, התקנת OS מחדש, זיהוי מדפסת מחדש אם גם IPP class driver מתאים למכשיר, הדירוג בוחר driver אחר מאשר קודם
הפעלת WPP מדפסות על drivers של צד שלישי מוסרות. דגמים תואמים נרשמים מחדש עם Windows Ready Print; דגמים לא תואמים כבר לא ניתנים לשימוש כמו שהם

כשמספר חבילות driver מתאימות לאותו מכשיר, Windows נותן לכל אחת דירוג ובוחר את הטובה ביותר. השינוי ב-1 ביולי 2026 גורם לבחירה הזו להעדיף את IPP class driver. במכשירים שעבורם IPP class driver אינו מועמד, חבילת היצרן יכולה להמשיך להיבחר.31

שני נתיבים שבהם drivers מוחלפים בשטחבמכשירים ש-IPP class driver מתאים להם, הדירוג בוחר את IPP class driver בהחלפת PC, התקנת OS מחדש או זיהוי מדפסת מחדש וה-driver מוחלף; כש-Windows protected print mode מופעל, מדפסות על drivers של צד שלישי מוסרות, ה-driver מוחלף בדגמים שאפשר לרשום מחדש עם Windows Ready Print, ויעד ההדפסה אובד בדגמים שאי אפשרכןלאPC בשטחהחלפת PC, התקנת OS מחדש, זיהוי מחדשWindows protected print mode מופעלמועדף במכשירים ש-IPP class driver מתאים להםמדפסות על drivers של צד שלישי מוסרותה-driver מוחלףאפשר לרשום מחדש עם Ready Print?יעד ההדפסה אובד

איור 2: הפרדה בין תוכנית סיום התמיכה לבין WPP מאפשרת להפריד בין המצבים שבהם ה-driver משתנה לבין המצבים שבהם יעד ההדפסה עצמו אובד.

חשוב כאן גם לא להתייחס לתמיכה ב-IPP ולהסמכת Mopria כאותו תנאי.

תנאי מה שהוא מחליט בעיקר
IPP class driver מתאים למכשיר האם שינוי הדירוג יכול להחליף את ה-driver
Mopria certified, ולחיבורי רשת IPP מופעל ונגיש, ולחיבורי USB המכשיר במצב IPP over USB האם אפשר לרשום מחדש את המדפסת הפיזית כ-Windows Ready Print תחת WPP

במכשיר שתומך ב-IPP בלי הסמכת Mopria, שינוי הדירוג יכול להחליף את ה-driver גם אם לא משתמשים ב-WPP. לעומת זאת, שם driver של “Microsoft IPP Class Driver” לבדו אינו מאשר שהמדפסת ניתנת לשימוש תחת WPP.14

התאמת IPP class driver והסמכת Mopria הם תנאים נפרדיםאם המדפסת תומכת ב-IPP, שינוי הדירוג יכול לבחור את IPP class driver ולהחליף את ה-driver, בעוד שהסמכת Mopria היא תנאי נפרד שמחליט אם אפשר לרשום מחדש את המדפסת תחת Windows protected print mode, ודורש ש-IPP יהיה מופעל ונגיש במכשירים מחוברים לרשת ומצב IPP over USB במכשירים מחוברים ב-USBכןלאלאכןלאכןלאכןכןלאמדפסתתומכת ב-IPP?ניתן להחלפהנשארת על driver היצרןמוסמכת Mopria?אי אפשר לרשום מחדש תחת WPPחיבור USB?IPP מופעל ונגיש?ניתן לרישום מחדש תחת WPPמצב IPP over USB?

איור 3: אפקט הדירוג נקבע לפי תמיכה ב-IPP; האם המדפסת שורדת תחת WPP נקבע לפי הסמכת Mopria ועוד IPP מופעל ונגיש (מצב IPP over USB לחיבורי USB).

2.3 לחתימת drivers יש חריגים, אבל המשך אינו מובטח

אחרי 15 בינואר 2026, drivers שעומדים באחד מהתנאים הבאים יכולים לקבל בקשת חריג חתימה לסקירה מקרה-מקרה.1

  • למדפסות שלא יכולות לקבל הסמכת Mopria.
  • חבילות שה-OS היעד הגבוה ביותר שלהן הוא Windows 10 או מוקדם יותר.
  • drivers native ARM64.

הגשות חסומות כברירת מחדל גם ל-WHQL וגם ל-Attestation, והופכות לסקירה ידנית עם מסמך הצדקה מצורף. גם כשהתנאים חלים, אין ערובה שהיצרן יגיש או ש-Microsoft תאשר.5 גם, היכולת לקבל driver חתום והיכולת להשתמש בו בסביבה עם WPP מופעל הם שני דברים שונים. ההכנה למדפסות תוויות וקבלות מכוסה בפרק 6.

תנאים שבהם חתימת driver עדיין מותרת אחרי 15 בינואר 2026הגשות driver מיצרנים חסומות כברירת מחדל, ורק אלה שעומדים באחד משלושה תנאים, מדפסות שלא יכולות לקבל הסמכת Mopria, חבילות שהיעד הגבוה ביותר שלהן הוא Windows 10 או מוקדם יותר, ו-drivers native ARM64, יכולות לקבל בקשת חריג לסקירה מקרה-מקרה, שעשויה להוביל לאישור אבל אינה מבטיחה חתימההגשת driver של יצרןחסום כברירת מחדלדגם שלא יכול לקבל הסמכת MopriaWindows 10 או מוקדם יותר כיעד הגבוה ביותרNative ARM64אפשר לבקש חריגסקירה מקרה-מקרהעשוי להיות מאושר (אין ערובה)

איור 4: עמידה בתנאים רק מכניסה את ה-driver לסקירה; האם הוא ייחתם אינו מובטח.

3. איך זה עובד — נתיב ה-driver המסורתי ו-Windows Ready Print

3.1 מה שמשתנה הוא נתיב ההדפסה מעבר ל-API הציור

בהדפסת Windows המסורתית, האפליקציה מוציאה פקודות ציור GDI או XPS, ה-spooler מקבל את העבודה, ו-printer driver ממיר אותה לשפת המדפסת (PDL) ושולח אותה. גם נתיב ההדפסה GDI וגם נתיב ההדפסה XPS יושבים מעל המבנה הזה.6

נתיב ה-driver המסורתיה-spooler שרץ כ-SYSTEM עושה spool לפקודות הציור GDI או XPS של האפליקציה העסקית, ו-driver v3 או v4 של צד שלישי ממיר אותן ל-PDL קנייני ושולח אותן למדפסת, בתוך תהליך ה-spooler עצמו בלי driver isolation, או בתהליך נפרד מה-spooler במצב shared או isolatedNoneShared / Isolatedאפליקציה עסקית (GDI / XPS)Spooler (הרשאות SYSTEM)Driver isolationdriver של צד שלישי בתוך תהליך ה-spoolerdriver של צד שלישי בתהליך נפרדהמרה ל-PDL קניינימדפסת

איור 5: בנתיב המסורתי התהליך שונה עם isolation, אבל המבנה שבו קוד של צד שלישי בתוך מחסנית ההדפסה מטפל בהמרה ל-PDL זהה.

היורש הוא Windows Ready Print. זה השם הכולל להדפסה דרך IPP (Internet Printing Protocol), סריקה דרך eSCL, ו-Universal Print, והוא אינו דורש driver של צד שלישי. הוא מתוכנן למדפסות Mopria certified, והעצמאות מארכיטקטורת ה-CPU היא יתרון נוסף.7

Windows 10 21H2 ואילך מגיעים עם Microsoft IPP Class Driver, שמטפל במדפסות תואמות Mopria גם ברשת וגם ב-USB.1 תורי ענן של Universal Print משתמשים ב-Universal Print Class Driver ה-inbox.8

נתיב Windows Ready Printה-spooler מקבל את פקודות הציור של האפליקציה העסקית, ואו Microsoft IPP Class Driver ה-inbox מרנדר ל-PWG Raster או PDF בלקוח ושולח דרך IPP למדפסת Mopria certified, או Universal Print Class Driver ה-inbox שולח דרך IPP over HTTPS לשירות Universal Print; Windows protected print mode מאפשר רק את נתיב Windows Ready Print הזהמאפשר רק את נתיב Ready Printאפליקציה עסקית (GDI / XPS)SpoolerMicrosoft IPP Class Driverרינדור ל-PWG Raster / PDFמדפסת Mopria certified (IPP)Universal Print Class Driverשירות Universal Print (IPP over HTTPS)Windows protected print mode

איור 6: גם Windows Ready Print עובר ב-spooler. מה שמשתנה הוא שההמרה והשליחה עוברות מ-driver של צד שלישי ל-class drivers ה-inbox.

IPP הוא פרוטוקול מבוסס HTTP, והוא מזהה מדפסת לפי URI כמו ipps://printer.example.com/ipp/print. ה-PDLs שמשמשים להדפסה בלי driver מוגבלים לכמה פורמטים מבוססי תקנים ציבוריים, כמו PWG Raster ו-PDF, והמסמך הסופי מרונדר בצד הלקוח.9 עם Universal Print, ה-spooler שולח את העבודה לשירות דרך IPP over HTTPS.8

נקודת הכניסה כפי שהאפליקציה רואה אותה לא משתנה. אפליקציה שמציירת עם GDI או XPS קוראת לאותם APIs. מה שמשתנה הוא המנגנון שמעבר לזה שמחזיר את רשימת גדלי הנייר והמגשים, מספק יכולות קנייניות, וממיר ל-PDL. לכן אפליקציות שתלויות במידע ש-driver מחזיר או בהגדרות קנייניות מושפעות יותר מאפליקציות שמציירות בלבד. ליכולות ספציפיות ליצרן, בודקים גם אם הן מסופקות דרך Print Support App (PSA).10

3.2 בודקים הדפסה, פקס וסריקה בנפרד במכשירים רב-תכליתיים

האם מכשיר יכול לעבור ל-Windows Ready Print תלוי בכך שלמכשיר יש את הפונקציה ומממש את הפרוטוקול המתאים.1

פונקציה תמיכה נדרשת לחיבור רשת תנאי נוסף לחיבור USB
הדפסה IPP מצב IPP over USB
פקס יוצא IPP Fax Out מצב IPP over USB
סריקה eSCL או WS-Scan מצב IPP over USB

לא מסיקים מתמיכת הדפסה Mopria לבדה שגם פקס וסריקה יכולים לעבור.

סדר לבדיקת כל פונקציה של מכשיר רב-תכליתי בנפרדבוחרים את הפונקציות שמשתמשים בהן אחת בכל פעם, בודקים בסדר שלמכשיר יש את הפונקציה, שהוא תומך בפרוטוקול בטבלה, ושהוא במצב IPP over USB כשמחובר ב-USB, ובודקים את הפונקציות שנשארו בנפרד במקום לעשות reuse לתוצאת ההדפסה לפקס או לסריקהכןלאכןלאכןלאכןלאבוחרים פונקציה אחת שמשתמשים בהלמכשיר יש את הפונקציה?תומך בפרוטוקול בטבלה?התנאי לפונקציה הזו לא מתקייםחיבור USB?מצב IPP over USB?התנאי לפונקציה הזו נבדקבודקים את הפונקציות שנשארו בנפרד

איור 7: בודקים בסדר של זמינות פונקציה, פרוטוקול נתמך, והתנאי הנוסף לסוג החיבור. לא עושים reuse לתוצאת ההדפסה לפקס או לסריקה.

3.3 הרקע הוא אבטחת מחסנית ההדפסה

לפי ההסבר ב-Microsoft Learn, באגים שקשורים להדפסה היוו 9% ממקרי MSRC (Microsoft Security Response Center) שספרה בשלוש השנים הקודמות. ה-spooler רץ עם הרשאות SYSTEM, נגיש באופן רחב ממשתמשים רגילים, וטוען קוד של צד שלישי לפי דרישה. חלק מה-drivers הישנים אינם תואמים ל-mitigations מודרניים כמו CFG ו-CET, מה שמקשה להחיל mitigations שדורשים שכל פיסת קוד משתתפת תתמוך בהם.9

למה mitigations לא יכולים להיכנס כל עוד נטענים drivers של צד שלישיה-spooler שרץ כ-SYSTEM טוען קוד של צד שלישי, וכי drivers ישנים אינם תואמים ל-mitigations כמו CFG ו-CET, mitigations שדורשים שכל משתתף יתמוך בהם אינם ניתנים להחלה על ה-spooler, מה שמקל לנצל פגיעויותה-spooler רץ כ-SYSTEMטוען קוד של צד שלישי לפי דרישהdrivers ישנים אינם תואמים ל-mitigationsקל יותר לנצל פגיעויותMitigations (CFG / CET / ACG) אינם ניתנים להחלה

איור 8: mitigations נכנסים רק ברגע שכל משתתף תומך בהם, כך שאי אפשר להגן על ה-spooler במלואו אלא אם מסירים את ה-drivers.

איפה driver של צד שלישי רץ תלוי בהגדרת printer driver isolation.11

מצב isolation איפה ה-driver רץ
None בתוך תהליך ה-spooler עצמו
Shared בתהליך נפרד מה-spooler, משותף עם drivers אחרים
Isolated בתהליך נפרד ייעודי ל-driver הזה

driver שמצהיר DriverIsolation=2 ב-INF שלו משתמש בתהליך המשותף כברירת מחדל, ו-driver שלא מצהיר רץ בתוך תהליך ה-spooler כברירת מחדל. מנהלים יכולים לדרוס את זה מ-Print Management console או מ-Group Policy. בכל מצב, עם זאת, קוד של צד שלישי עדיין רץ בתוך מחסנית ההדפסה.11 WPP הוא מצב ההפעלה שמסיר את התלות הזו בקוד של צד שלישי.

איך נקבע התהליך שבו רץ driver של צד שלישיdriver שמצהיר DriverIsolation=2 ב-INF שלו רץ כברירת מחדל בתהליך משותף נפרד מה-spooler, driver בלי ההצהרה רץ כברירת מחדל בתוך תהליך ה-spooler, ומנהלים יכולים לדרוס את זה מ-Print Management console או מ-Group Policy ל-shared, בתוך תהליך ה-spooler, או תהליך נפרד ייעודי (isolated)כןלאה-INF מצהיר DriverIsolation=2רץ בתהליך משותף נפרד (ברירת מחדל)רץ בתוך תהליך ה-spooler (ברירת מחדל)נדרס על ידי הגדרות administrator או policyרץ בתהליך נפרד ייעודי (isolated)

איור 9: מצב ה-isolation נקבע לפי הצהרת ה-INF והגדרות administrator; drivers ישנים בלי ההצהרה רצים בתוך תהליך ה-spooler כברירת מחדל.

4. מה נעלם תחת Windows protected print mode

4.1 WPP הוא מצב הפעלה ש”משתמש רק ב-Windows Ready Print”

WPP הוצג ב-Windows 11 24H2. נכון לכתיבת המאמר הוא כבוי כברירת מחדל, וכשהוא כבוי הוא לא מטיל הגבלות על התקנת drivers או יכולות הדפסה.1213 מפרידים בין הדרך שבה מפעילים אותו לבין מי יכול לכבות אותו בחזרה.

נתיב הפעלה איפה מגדירים איך מכבים בחזרה
אפליקציית Settings Windows protected print mode תחת “Printers & scanners” אם המשתמש הפעיל באפליקציית Settings, המשתמש יכול לכבות באפליקציית Settings
Group Policy “Computer Configuration > Administrative Templates > Printers > Configure Windows protected print” administrator משנה את ה-policy
Intune OMA-URI ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint administrator משנה את ה-policy

כשמפעילים דרך Group Policy, המשתמש לא יכול לכבות בלי לפנות ל-administrator. OMA-URI של Intune הוא נתיב נוסף שמחיל את אותה device policy מבוססת ADMX. מניחים ש-המשתמש יכול לכבות ממסך Settings רק כשהמשתמש הפעיל ממסך Settings.14213

שלושה נתיבים להפעלת Windows protected print modeאפשר להפעיל Windows protected print mode מאפליקציית Settings, מ-Group Policy, או מ-OMA-URI של Intune; המשתמש יכול לכבות מאפליקציית Settings רק כשהמשתמש הפעיל שם, וכשהוא הופץ ב-Group Policy או ב-policy של Intune אי אפשר לכבות בלי שה-administrator ישנה את ה-policyהמשתמש יכול לכבות באפליקציית Settingsהמשתמש לא יכול לכבותהמשתמש לא יכול לכבותאפליקציית Settings (הופעל על ידי המשתמש)Windows protected print mode מופעלGroup PolicyIntune (OMA-URI)כבויכיבוי דורש שינוי policy של administrator

איור 10: יש שלושה נתיבי הפעלה, והמשתמש יכול לכבות רק כשהמשתמש הפעיל מאפליקציית Settings.

4.2 תורים ששורדים, תורים שנעלמים, ותורים שחייבים רישום מחדש

האפקט בזמן ההפעלה תלוי לא רק במדפסת עצמה אלא גם ב-עם איזה driver היא רשומה כרגע.2

יעד ההדפסה הנוכחי כש-WPP מופעל איך להתכונן
מדפסת פיזית רשומה עם driver של צד שלישי (v3/v4) התור מוסר וה-driver מוסר גם מ-driver store רושמים מחדש דגמים תואמים עם Windows Ready Print. לדגמים לא תואמים, בוחרים נתיב אחר או מחליטים לא להשתמש ב-WPP
מדפסת רשומה עם driver של יצרן, גם אם Mopria certified היא מוסרת פעם אחת. הסמכה לא אומרת שהתור הקיים שורד בודקים הפעלת IPP ונגישות לחיבורי רשת, או מצב IPP over USB ל-USB, ורושמים מחדש
מדפסת תואמת שכבר רשומה עם Windows Ready Print ממשיכה לעבוד מאמתים יכולות, הגדרות ופלט בפועל
תור ענן Universal Print יושב בצד התואם ל-WPP כחלק מ-Windows Ready Print בודקים תלויות בשם התור ומאמתים פלט בפועל
מדפסת תוכנה לא נתמכת מוסרת למדפסות PDF של צד שלישי וכדומה, בודקים את תמיכת המוצר ב-WPP. מעבירים ארכיון דוחות ליצירה ישירה עם ספריית PDF
מדפסת וירטואלית שעודכנה לתמיכה ב-WPP לא מטופלת כמו מוצרים לא נתמכים. ל-OneNote יש Protected virtual printer מאמתים מאיזה סוג המוצר והתור שבשימוש
Microsoft XPS Document Writer, מדפסת הפקס הווירטואלית מוסרים אחרי כיבוי WPP, מתקינים מחדש XPS ידנית מ-“Windows Features” ופקס מ-optional feature “Windows Fax and Scan”
מה קורה למדפסות כש-Windows protected print mode מופעלבהפעלה, מדפסות שהותקנו עם drivers של צד שלישי ומדפסות וירטואליות לא נתמכות, XPS Document Writer ומדפסת הפקס הווירטואלית מוסרות; דגמים שהם Mopria certified ו, לחיבורי רשת, יש להם IPP מופעל ונגיש או, לחיבורי USB, במצב IPP over USB, ניתנים לרישום מחדש עם Windows Ready Print, ומכשירים לא נתמכים אינם ניתנים לשימוש כל עוד הוא מופעלכןרשתUSBכןכןלאלאלאWPP מופעלמדפסות על drivers של צד שלישי מוסרותמדפסות וירטואליות לא נתמכות מוסרותXPS Document Writer ופקס גם מוסריםמוסמכת Mopria?סוג החיבורIPP מופעל ונגיש?מצב IPP over USB?רושמים מחדש עם Windows Ready Printלא שמיש כל עוד מופעל

איור 11: תור על driver של יצרן נעלם פעם אחת גם אם המדפסת Mopria certified. בודקים את תנאי הרישום מחדש בנפרד.

כל עוד WPP מופעל, אי אפשר להשתמש ב-drivers של צד שלישי שהוסרו. גם, כיבוי WPP בחזרה לא מחזיר אוטומטית מדפסת שהותקנה מחדש עם Windows Ready Print ל-driver המקורי שלה.210

בצד האפליקציה, הדברים לבדוק הם עיבוד שמניח את גדלי הנייר, המגשים והיכולות הקנייניות ש-driver של יצרן מחזיר, מדפסות וירטואליות בסגנון port monitor DLL, ו-XPS Document Writer. יצירת קובצי XPS ישירות עם XpsDocument וכדומה שונה מהדפסה לתור הווירטואלי שנקרא XPS Document Writer, ואינה מושפעת מההסרה הזו.

4.3 גם הניהול והפנים של ה-spooler משתנים

תחת WPP, binaries של צד שלישי כמו port monitor DLLs כבר לא נטענים. APIs לטעינת מודולים כמו AddPrintProvidorW כבר לא יכולים לטעון מודולים חדשים, ורק ה-binaries החתומים על ידי Microsoft שנחוצים ל-IPP נטענים. AddPrintProvidorW הוא האיות ההיסטורי ב-winspool.h; ההסבר ב-Microsoft Learn כותב אותו כ-AddPrintProviderW.9

ההגבלה הזו מאפשרת לרינדור XPS לרוץ עם הרשאות משתמש במקום SYSTEM, ותהליך העובד החדש של ה-spooler משתמש ב-token מוגבל עם הרשאות כמו SeTcbPrivilege מוסרות. יצירת child process אסורה, וגם CFG, CET ו-ACG מופעלים.9

שינויים ב-spooler תחת Windows protected print modeהפסקת טעינת binaries של צד שלישי מאפשרת להגביל טעינת מודולים, לרנדר XPS עם הרשאות משתמש, להריץ תהליכי עובד עם token מוגבל, לאסור יצירת child process, ולהפעיל CFG, CET ו-ACGbinaries של צד שלישי אינם נטעניםטעינה מוגבלתהרשאות מופחתותMitigations מופעליםרק binaries חתומים על ידי MicrosoftXPS בהרשאות משתמש, token מוגבלבלי child processes, CFG / CET / ACG

איור 12: ה-mitigations שלא יכלו להיכנס באיור 8 ניתנים להפעלה רק ברגע ש-binaries של צד שלישי מוסרים.

Point and Print שומר על תצורת IPP שלו אבל כבר לא מתקין drivers של צד שלישי. גם הליכי provisioning שנבנו על ההנחה ש-“חיבור לשרת ההדפסה מפיץ את ה-driver” צריכים להישקל מחדש.9

האם WPP מופעל כרגע אפשר לבדוק עם WinRT API Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo.IsProtectedPrintEnabled ב-Windows 11 24H2 ואילך.15 הגדרת Group Policy היא הערך WindowsProtectedPrintGroupPolicyState תחת HKLM\Software\Policies\Microsoft\Windows NT\Printers\WPP.13

שימו לב שלקוח עם WPP מופעל לא יכול לנהל שרת הדפסה עם WPP כבוי מ-Print Management. מספקים למנהלים לקוח ניהול נפרד עם WPP כבוי.14

5. ספירת מלאי של אפליקציות קיימות — ארבעת המקומות לבדוק

ארבעת המקומות לספירת מלאי באפליקציה עסקיתבקוד ההדפסה של אפליקציה עסקית, ארבעת המקומות, שמירת הגדרות ספציפיות ל-driver, תלויות בשם תור (כולל אלה בתוך SDKs וספריות), תלויות במדפסות וירטואליות שלא נתמכות על ידי WPP, ושליחת RAW לתורים שלא שורדים WPP, הם יעדים לשכתוב, וקוד שמצייר בלבד הוא יעד לאימותקוד הדפסה של אפליקציה עסקיתסופרים את ארבע התלויותציור בלבדשמירת הגדרות ספציפיות ל-driverתלות בשמות תוריםתלות במדפסות וירטואליותשליחת RAWכולל בתוך SDKsאלה שלא נתמכות על ידי WPPלתורים שלא שורדיםשכתובאימות

איור 13: רק ארבע התלויות הן יעדים לשכתוב; קוד שמצייר בלבד הולך לאימות.

5.1 קודם לוקחים את רשימת ה-drivers בשטח ושופטים את יעד ההדפסה

האם נחוץ שכתוב נקבע אחרי שרואים מה מותקן בשטח. לוקחים את רשימת התורים וה-drivers עם מודול PrintManagement של PowerShell. רישום עם Get-Printer ו-Get-PrinterDriver אינו דורש הרשאות administrator, אבל שלב pnputil במחצית השנייה כן.1617

# לכל תור, מציגים את שם ה-driver, גרסה ראשית (3 = v3, 4 = v4), יצרן, ושם קובץ INF
Get-Printer |
    Select-Object Name, DriverName, PortName,
        @{ Name = "DriverMajorVersion"; Expression = { (Get-PrinterDriver -Name $_.DriverName).MajorVersion } },
        @{ Name = "Manufacturer"; Expression = { (Get-PrinterDriver -Name $_.DriverName).Manufacturer } },
        @{ Name = "InfName"; Expression = { Split-Path -Leaf (Get-PrinterDriver -Name $_.DriverName).InfPath } } |
    Sort-Object DriverName |
    Format-Table -AutoSize

# מציגים רק חבילות driver של צד שלישי, עם השם המפורסם (oemN.inf), שם ה-INF המקורי, והספק (דורש הרשאות administrator)
pnputil /enum-drivers /class Printer

MajorVersion מבדיל בין v3 ל-v4.18 עם זאת, ההבחנה v3/v4 וההבחנה inbox/צד-שלישי הן נפרדות. מסווגים כך.

קטגוריה איך מזהים מה לבדוק אחר כך
תור על IPP class driver DriverName הוא Microsoft IPP Class Driver הסמכת Mopria, הפעלת IPP ונגישות ברשת, מצב IPP over USB ל-USB. לא מחליטים תאימות WPP מהשם לבדו
תור Universal Print משתמש ב-Universal Print Class Driver ה-inbox8 מתייחסים כצד התואם ל-WPP ובודקים את תלויות שם התור והפלט של האפליקציה
תור על driver inbox אחר לא שם class driver ידוע ולא ברשימת חבילות צד שלישי XPS ופקס מוסרים. לא מניחים ש-Generic / Text Only וכדומה שורדים. Microsoft Print to PDF אינו ברשימת ההסרה, ולכן שופטים תור-תור
תור על driver של יצרן מצליבים את שם קובץ ה-INF והספק מול רשימת חבילות צד שלישי מ-pnputil מועמד להחלפת driver. תחת WPP התור הקיים נעלם, ולכן בודקים אם אפשר לרשום מחדש את המכשיר הפיזי

InfPath מ-Get-PrinterDriver הוא הנתיב ל-INF בתוך driver store ואינו מובטח להחזיר את שם oemN.inf המפורסם. מצליבים את השם המפורסם, שם ה-INF המקורי והספק ש-pnputil /enum-drivers מחזיר מול שם הקובץ של InfPath ו-Manufacturer. pnputil /enum-drivers מציג רק חבילות צד שלישי; חבילות inbox לא מופיעות ברשימה.1917

הליך לספירת המדפסות בשטחלוקחים את רשימת התורים וה-drivers עם PowerShell, ולפי DriverName ולפי הצלבת Manufacturer מול רשימת חבילות צד שלישי מ-pnputil מחלקים אותם לתורים על IPP class driver, תורי Universal Print (תואמי WPP), תורים על drivers inbox אחרים (XPS ופקס מוסרים, Generic / Text Only אי אפשר להניח ששורדים, Microsoft Print to PDF אינו ברשימת ההסרה ולכן נשפט בנפרד), ותורים על drivers של יצרן (מועמדים להחלפה); לתורים על IPP class driver מאשרים בנפרד הסמכת Mopria, IPP מופעל ונגיש לחיבורי רשת, ומצב IPP over USB לחיבורי USB, ואז מצליבים כל תור מול התורים שהגדרות האפליקציה וקוד ההדפסה מצביעים אליהםIPP ClassUniversal Print ClassInbox אחריצרןלוקחים את הרשימה עם Get-Printer / Get-PrinterDriverDriverName והספקתור על IPP class driverתור Universal Printשופטים בנפרד עם טבלת פרק 4מועמד להחלפהבודקים Mopria, נגישות IPP, USBמצליבים מול הגדרות וקוד האפליקציהממיינים עם טבלת ההחלטה

איור 14: לקיחת הרשימה ומיון לפי שם אינם דורשים הרשאות administrator; הצלבת הספק דורשת הרשאות administrator ל-pnputil.

מצליבים את הרשימה הזו מול התורים שהגדרות האפליקציה, קוד ההדפסה וה-SDKs שהיא משתמשת בהם מפנים אליהם. אם רושמים את ה-driver, הסמכת Mopria, סוג החיבור, נגישות IPP ומצב הפעלת USB לכל אתר לקוח, אפשר לעשות את השיפוט עם הטבלה בפרק 4.

אם יעד ההדפסה לא שורד WPP ואי אפשר לרשום אותו מחדש, מספקים את הנתיב החלופי בפרק 6 או מחליטים לא להשתמש ב-WPP לפני ספירת הקוד. אם המכשיר יכול להיות מושפע משינוי דירוג IPP גם בלי WPP, ממשיכים מ-5.2 ואילך. אם לא משתמשים ב-WPP ולהחלפת driver אין אפקט, ההחלטה היא להמשיך לפעול בנתיב הנוכחי.

כדי לבדוק את שם ה-driver מתוך האפליקציה, קוראים PrintQueue.QueueDriver.Name עם System.Printing של WPF.20

using System.Printing;

// מכלי ניהול או מאפליקציית desktop, מציגים את שם ה-driver של כל תור
using var server = new LocalPrintServer();
foreach (PrintQueue queue in server.GetPrintQueues(
    new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections }))
{
    Console.WriteLine($"{queue.Name}\t{queue.QueueDriver?.Name}\t{queue.QueuePort?.Name}");
}

עם זאת, מרחב השמות System.Printing אינו תומך בשימוש בתוך Windows service. אם מדפיסים משירות תושב, שמים את האבחון הזה בכלי הניהול במקום.21 למגבלות על הדפסה משירות, ראו איך בונים ומפעילים Windows Services ופרק 7 במאמר הקודם.

5.2 בדיקה 1: האם נשמרות ומשחזרות הגדרות ספציפיות ל-driver?

הדבר הקשה ביותר למצוא הוא הגדרות הדפסה שמורות. הסיבה שהן נשברות שונה לפי איך שומרים אותן.

מה נשמר מימוש טיפוסי למה זה נשבר כשה-driver משתנה
החלק הפרטי של DEVMODE שומרים את התוצאה של DocumentProperties או את ה-buffer של GetHdevmode בשלמותו, ומשחזרים עם SetHdevmode נתונים פרטיים ניתנים לפירוש רק על ידי ה-driver הזה
כל PrinterSettings של .NET Framework עושים binary-serialize לאובייקט אחרי דיאלוג ההדפסה אזור פרטי של ה-driver שהועתק בפנים יכול להישמר גם
ערכי מאפיינים ציבוריים שומרים PaperSize, PaperSource, PrinterResolution, Duplex וכדומה בפורמט מותאם זה לא buffer פרטי, אבל המשמעות של נייר מותאם ומספרי מגשים וכדומה משתנה
PrintTicket עם הרחבות פרטיות שומרים XML שמכיל namespace ספציפי ליצרן ההרחבות הקנייניות תלויות ב-driver או בדגם המקורי

DEVMODE יכול לשאת נתונים פרטיים אחרי החברים הציבוריים שלו, עם הגודל שניתן ב-dmDriverExtra. Windows מאמת רק את החלק הציבורי, ונתונים פרטיים פגומים יכולים להקריס את ה-driver בתהליך האפליקציה או ה-spooler.22

החלקים הציבוריים והפרטיים של DEVMODEמבנה DEVMODE נושא נתונים פרטיים שה-driver מגדיר ומסומנים ב-dmDriverExtra אחרי החברים הציבוריים; רק החלק הציבורי מאומת על ידי Windows והחלק הפרטי ניתן לפירוש רק על ידי ה-driver הזה, כך ששמירה בשלמות מאבדת את משמעותו כשה-driver משתנהמבנה DEVMODEחלק ציבורי (dmSize)חלק פרטי (dmDriverExtra)מאומת על ידי Windowsמפורש רק על ידי ה-driver הזהמאבד את משמעותו כשה-driver משתנה

איור 15: מהגדרה שנשמרת בשלמות, החלק שנשבר הוא החלק הפרטי.

PrinterSettings שקיבל את ההגדרות דרך SetHdevmode מעתיק את האזור הפרטי הזה פנימית.23 גרסת .NET Framework של PrinterSettings נושאת את המאפיין Serializable, ו-binary serialization כולל שדות פרטיים כברירת מחדל, כך ששמירת האובייקט כולו נושאת את אותה תלות.2425

גרסת .NET של PrinterSettings, לעומת זאת, אין לה מאפיין Serializable, ומימוש ששומר את המאפיינים הציבוריים בנפרד בפורמט משלו אינו שומר את buffer ה-DEVMODE ה-native או את אזור dmDriverExtra.24 מה לעקוב אחריו במקרה הזה הוא ערכים תלויי driver.

שמירת DEVMODE ושמירת ערכים מנוהלים נשברות אחרתמימוש ששומר את buffer DEVMODE בשלמותו ואחד שעושה serialize ל-PrinterSettings שלם אחרי קבלת האזור הפרטי דרך SetHdevmode נושאים את החלק הפרטי איתם ומאבדים את משמעותם כשה-driver משתנה; מימוש ששומר ערכי מאפיינים ציבוריים נושא מספרי נייר ומגשים Custom או ספציפיים ליצרן שהם ערכים מול רשימת driver היצרן ואינם מובטחים לאותה משמעות תחת IPP class driver; שניהם מוחלפים בתכנון ששומר רק את הכוונהשומרים DEVMODE בשלמותנושא את החלק הפרטי איתושומרים בשלמות אחרי SetHdevmodeמאבד את משמעותו כשה-driver משתנהשומרים ערכי מאפיינים ציבורייםנושא מספרי נייר ומגשים מותאמיםאין ערובה לאותה משמעות ב-driver החדששניהם עוברים לשמירת הכוונה בלבד

איור 16: שמירת האובייקט כולו אחרי SetHdevmode נופלת בצד החלק הפרטי; אופני הכשל שונים, אבל שניהם נושאים מצב driver.

אם RawKind מייצג PaperKind או PaperSourceKind סטנדרטי, הוא שומר על משמעותו כשה-driver משתנה. מה שאינו מובטח הוא שמספרים Custom או ספציפיים ליצרן מצביעים לאותו נייר או מגש ב-driver אחר. לא מתייחסים לערכים סטנדרטיים כנשברים באופן גורף.2627

אילו ערכי נייר ומגש שמורים נשבריםמבין ערכי RawKind, אלה שתואמים לגדלי נייר סטנדרטיים (PaperKind) כמו A4 או מקורות נייר סטנדרטיים (PaperSourceKind) כמו Upper ו-Lower שומרים על משמעותם כשה-driver משתנה, בעוד ש-Custom וערכים ספציפיים ליצרן הם מספרים מול רשימת driver היצרן ו-IPP class driver אינו מובטח לפרש אותם כאותו נייר או מגשRawKind שמורערכים סטנדרטיים (PaperKind וכו')ערכי Custom וספציפיים ליצרןשומר על משמעותו כשה-driver משתנהאין ערובה לאותו נייר או מגש

איור 17: מה שנשבר אינו הערכים הסטנדרטיים אלא הערכים המותאמים מול רשימת driver היצרן.

גם PrintTicket מגדיר את המילות המפתח הציבוריות שלו ב-namespace psk אבל יכול להכיל הרחבות פרטיות ספציפיות למכשיר. הכלל הוא שאלמנטים של צד שלישי שייכים ל-namespace שמשויך בבירור לצד השלישי הזה. אם namespace של יצרן מופיע ב-XML השמור, בודקים אותו כהגדרה ספציפית ל-driver.2829

תיקון: שומרים רק את ה-“כוונה”

שומרים את הכוונה, כלומר את בחירת גודל הנייר, הכיוון, דופלקס, עותקים ומגש, בקובץ הגדרות משלכם באמצעות מילות מפתח ציבוריות. במקום לשאת קדימה את המצב הפנימי של ה-driver, מצליבים אותו מול היכולות הנוכחיות מיד לפני ההדפסה.

ב-WPF, מקבלים את היכולות עם PrintQueue.GetPrintCapabilities, מבטאים את הבקשה כ-PrintTicket, ומעבירים אותה ל-MergeAndValidatePrintTicket.30 הדבר לעקוב אחריו כאן הוא ש-בקשה לא נתמכת לא בהכרח מייצרת שגיאה. ה-driver עשוי לפתור את הקונפליקט ולהחזיר ticket תקף, בדרך כלל עם ההגדרה מוחלפת בברירת מחדל או דומה.

אם ValidationResult.ConflictStatus הוא ConflictResolved, משווים את הדופלקס והמגש ב-ValidatedPrintTicket עם הבקשה, רושמים את ההפרש, ומודיעים למשתמש.31

תכנון ששומר רק את הכוונה ובודק אותה מול יכולות מיד לפני ההדפסהקובץ ההגדרות מחזיק רק את הכוונה לנייר, כיוון, דופלקס, עותקים ומגש במילות מפתח ציבוריות; מיד לפני ההדפסה, מקבלים את יכולות המדפסת הנוכחית עם GetPrintCapabilities, עוברים ב-MergeAndValidatePrintTicket, מדפיסים כמו שזה אם ConflictStatus הוא NoConflict, ואם הוא ConflictResolved משווים את הפריטים שהוחלפו עם הבקשה ושולחים אותם ללוג ולהתראהNoConflictConflictResolvedקובץ הגדרות: כוונה בלבד (נייר, כיוון, דופלקס, עותקים)GetPrintCapabilities מיד לפני ההדפסהMergeAndValidatePrintTicketConflictStatusמדפיסיםרושמים ומודיעים על ההפרש מהבקשה

איור 18: שומרים את כוונת ההגדרות ומאמתים אותה מול היכולות הנוכחיות בזמן ההדפסה. לא משתמשים בשקט בהגדרה שהוחלפה; בודקים את ההפרש.

ב-WinForms, בוחרים מחדש את הנייר מ-PrinterSettings.PaperSizes לפי Kind או ממדים ולא לפי שם. מקורות נייר מ-PaperSources ניתנים לשימוש חוזר כשהם ערכים סטנדרטיים ייחודיים כמו Upper או Lower, אבל כמה מגשים קנייניים יכולים לחזור מקובצים יחד כ-PaperSourceKind.Custom. ו-PaperSource אינו נושא ממדי נייר. לא מזהים מגש קנייני לפי Kind לבדו; או ממפים אותו במפורש ליכולות הנוכחיות או נותנים למשתמש לבחור שוב.27

5.3 בדיקה 2: האם יש תלות בשמות מדפסת או תור?

המאמר הקודם המליץ לשמור את שם המדפסת בקובץ הגדרות. מה שנוסף כאן הוא ההנחה ש-אין ערובה שתור עם אותו שם נוצר אחרי החלפת driver או זיהוי מחדש. הגדרה שמצביעה לשם התור הישן מאבדת את יעד ההדפסה כמו שהיא.

המקומות לבדוק הם שלושה: קובץ ההגדרות, שמות מקודדים בקוד, והפנים של SDKs וספריות דוחות. גם כשלקוד שלכם אין שם קבוע, SDK של יצרן עשוי לקרוא לתור או ל-driver ספציפי פנימית. מצליבים את תיעוד ה-SDK מול הרשימה מ-5.1.

שלושה מקומות שבהם תלות בשם תור יכולה להסתתרתלות בשם תור יכולה להסתתר בשלושה מקומות, שם קבוע בקובץ ההגדרות, שם קבוע מקודד בקוד, והתור או ה-driver ש-SDK של יצרן או ספריית דוחות קורא פנימית; שני הראשונים נמצאים בחיפוש בקוד ובהגדרות, האחרון בתיעוד ה-SDK וברשימה מ-5.1תלות בשמות תוריםשם קבוע בקובץ ההגדרותשם קבוע מקודד בקודקבוע בתוך ה-SDK או הספרייהמוצאים בחיפוש בקוד ובהגדרותמאשרים עם תיעוד ה-SDK ורשימת 5.1

איור 19: גם כשלקוד שלכם אין שם תור, תלות עשויה להישאר בתוך SDK או ספרייה.

התיקון הוא לבדוק בהפעלה שהשם המוגדר קיים ב-PrinterSettings.InstalledPrinters, ואם הוא לא נמצא, לרשום ולהודיע למשתמש. גם מאפשרים לבחור מחדש את יעד ההדפסה ממסך ההגדרות.

לא נופלים בשקט למדפסת ברירת המחדל. זה מסתיר פתק שיוצא ממדפסת של מחלקה אחרת כהדפסה רגילה.

אימות שם המדפסת בהפעלהבהפעלה, בודקים אם שם המדפסת בקובץ ההגדרות קיים ב-InstalledPrinters; אם כן, מדפיסים; אם לא, רושמים, מודיעים למשתמש, ונותנים להם לבחור שוב, ולא נופלים בשקט למדפסת ברירת המחדלכןלאלא עושים את זההפעלה: שם מדפסת מההגדרותקיים ב-InstalledPrinters?מדפיסים לתור הזהרושמים ומודיעים למשתמשבוחרים שוב במסך ההגדרותנופלים בשקט למדפסת ברירת המחדל

איור 20: מימוש שמדפיס בשקט למדפסת אחרת כשהיעד לא נמצא יוצר את הכשל שלוקח הכי הרבה זמן לגלות.

5.4 בדיקה 3: האם משתמשים במדפסת וירטואלית כדי לייצר קבצים?

ארכיון דוחות שמדפיס למדפסת PDF של צד שלישי וצופה בתיקיית הפלט, או עיבוד שיוצר קבצי ביניים עם XPS Document Writer, מפסיק לעבוד כשהתור שהוא משתמש בו מוסר על ידי WPP.

עם זאת, מה שמוסר הוא מדפסות תוכנה שלא נתמכות על ידי WPP. לא מבלבלים בין מוצרים לא נתמכים כמו אלה בסגנון port monitor DLL לבין מוצרים שעודכנו לתמיכה ב-WPP, כמו OneNote. שלב 3 בפרק 7 מאשר אם התור שבאמת משתמשים בו הוא יעד הסרה.2

אם מה שרוצים הוא PDF, אז כפי שהוסבר בפרק 5 במאמר הקודם, מעבר להגדרה שמייצרת אותו ישירות עם ספריית PDF הוא התכנון הכי פחות תלוי בשינויים במחסנית ההדפסה.

5.5 בדיקה 4: האם שליחת RAW עוברת בתור ש-WPP מסיר?

שליחת RAW היא השיטה של לדחוף נתוני שפת מדפסת דרך ה-spooler עם OpenPrinterStartDocPrinter (סוג נתונים “RAW”) → WritePrinterEndDocPrinter. המסמך חייב לתאר במלואם את הגדרות ההדפסה בשפת החומרה, והגדרות DEVMODE אינן בשימוש.3233

זו הגישה הסטנדרטית לתוויות ולקבלות, אבל שליחת RAW אינה “תקשורת ישירה שעוקפת את ה-spooler”. גם אם ה-driver משמש בפועל רק כ-pass-through לפורט, ה-pass-through הזה אובד כש-WPP מסיר את התור.

נתיב שליחת RAW ואיפה WPP מסיר אותוהאפליקציה דוחפת נתוני שפת מדפסת ל-spooler עם OpenPrinter, StartDocPrinter ו-WritePrinter, ותור שלא שורד WPP (כמו תור על driver של יצרן) פועל כ-pass-through לפורט ואחר כך למדפסת, כך שכש-WPP מסיר את התור ה-pass-through נעלםהתור נעלםאפליקציה: StartDocPrinter (RAW), WritePrinterSpoolerתור שלא שורד WPP (pass-through)פורטמדפסת תוויות או קבלותWPP מופעל

איור 21: שליחת RAW משתמשת ב-driver רק כ-pass-through, אבל ה-pass-through עצמו נעלם.

מה לבדוק הוא לאיזה צירוף של תור, driver ופורט שולחים. לא רק תורים על drivers של יצרן אלא גם drivers inbox למדפסות פיזיות מלבד IPP class driver, כמו Generic / Text Only, אי אפשר להניח ששורדים. כל דבר שמאושר שנעלם ברשימת ההסרה בפרק 7 צריך נתיב אחר באותה מידה.13

גם, Microsoft Learn לא קובעת שאפשר לשלוח PDL קנייני כ-RAW לתור על IPP class driver. כי זה תלוי ב-PDLs שמימוש IPP של המדפסת מקבל, לא מסיקים ש-“מעבר ל-IPP מעביר את אותם נתוני RAW”.

6. נתיב מילוט למדפסות תוויות וקבלות

KomuraSoft ממליצה להחזיק לפחות נתיב פלט אחד לתוויות ולקבלות שאינו תלוי ב-spooler.

גם כשמדפסת נופלת תחת חריג החתימה בפרק 2, המשך אספקת driver היצרן והשימוש בו תחת WPP אינם מובטחים.1 הנחיית troubleshooting של Microsoft גם מתעדת מקרה שבו מדפסות קבלות ותוויות מחוברות USB הפסיקו להדפיס אחרי עדכון ב-2021 והבעיה נפתרה ב-Known Issue Rollback.34 לדעת את נתיבי הפלט בנפרד היא ההכנה.

נתיב תלוי ב-spooler מצבים מתאימים וזהירויות
SDK של יצרן שמדבר עם המכשיר ישירות ב-TCP, USB או serial לא לדגמים שהיצרן מתחזק את ה-SDK לטווח ארוך. עוקבים אחרי bitness של ה-SDK, runtimes תלויים, ועדכוני חתימה
SDK של יצרן שקורא פנימית לתור Windows או ל-driver כן גם כשנשמר כנכס קיים, הוא נעצר כשהתור הפנימי מוסר על ידי WPP. זה אינו נתיב מילוט בלתי תלוי ב-spooler
שליחת שפת המדפסת ישירות ב-socket TCP לא למדפסות תוויות מחוברות רשת. מתכננים לניתוק, שידור מחדש ו-timeouts
שליחה ישירה ב-serial (virtual COM) או USB לא למדפסות קבלות ומכשירים שמותקנים לצד ציוד מדידה. דורש בחירה בין virtual COM, HID ו-WinUSB
הדפסה דרך IPP class driver (IPP / IPP over USB) כן; תואם WPP אם התנאים מתקיימים בודקים הסמכת Mopria, הפעלת IPP ונגישות ברשת, ומצב הפעלת USB. זה אינו נתיב שעוזב את ה-spooler

לתכנון חיבור מחדש ב-TCP, החשיבה ב-מלכודות אפליקציית תקשורת serial חלה. לבחירת שיטת USB, ראו איך עובדים עם התקני USB מאפליקציית Windows. IPP כבוי כברירת מחדל בחלק מהמדפסות וצריך להפעיל אותו.4

השם “SDK” לבדו אינו אומר אם נתיב בלתי תלוי. משתמשים בתיעוד ה-SDK וברשימה מ-5.1 כדי לאשר אם הוא מדבר עם המכשיר ישירות או בסוף קורא לתור Windows.

כשמשתמשים בתור Windows, Universal Print בצד התואם ל-WPP, אבל גם הוא עובר ב-spooler. תור שאינו IPP class driver ואינו Universal Print נעצר תחת WPP אם הוא driver של צד שלישי, XPS או פקס, ותור inbox שלא ברשימת ההסרה, כמו Microsoft Print to PDF, נשפט בנפרד. “תואם WPP” ו-“בלתי תלוי ב-spooler” הם סיווגים שונים.

זרימה להחלטה אם נתיב פלט תלוי ב-spoolerאם נתיב המועמד שולח לתור הדפסה של Windows, אז תור על IPP class driver שהמדפסת שלו Mopria certified ו, לחיבורי רשת, יש לה IPP מופעל ונגיש או, לחיבורי USB, במצב IPP over USB, ותור Universal Print כחלק מ-Windows Ready Print, תלויים ב-spooler אבל תואמי WPP; תורים על מכשירים לא-Mopria-certified או drivers של צד שלישי, ותורים שמוסרים לפי טבלת פרק 4 כמו XPS Document Writer ופקס, יכולים להיעצר תחת WPP; תורי inbox שלא ברשימת ההסרה כמו Microsoft Print to PDF נשפטים בנפרד כמו ב-5.1; אם הוא לא שולח לתור, SDK שקורא פנימית לתור או ל-driver חוזר לאותו שיפוט, בעוד ש-SDK שלא או נתיב ששולח ישירות למכשיר הוא נתיב מילוט שאינו תלוי ב-spoolerכןכןכןכןלאלאלאכןלאכן (driver צד שלישי, XPS, פקס)לא (Print to PDF וכו')לאכןכןלאלאנתיב פלט מועמדשולח לתור הדפסה של Windows?תור על IPP class driver?מוסמכת Mopria?IPP נגיש? (USB: over USB)תלוי, אבל תואם WPPתלוי, ויכול להיעצר תחת WPPתור Universal Print?מוסר לפי טבלת פרק 4?שופטים בנפרד (5.1)עובר ב-SDK של יצרן?קורא לתור או ל-driver פנימית?בודקים: תיעוד SDK ורשימת 5.1נתיב מילוט בלי תלות

איור 22: זה מתכנס לאיזה תור הנתיב בסוף עובר; מלבד תור על IPP class driver למכשיר Mopria certified ותור Universal Print, הכל מלבד תורי inbox שלא ברשימת ההסרה יכול להיעצר תחת WPP.

7. הליך אימות — עם ובלי WPP

קודם מאשרים את ענף האימות לפי אם משתמשים ב-WPP או לא. בשני המקרים, שומרים את הפלט מלפני השינוי ומאמתים עם יעדי ההדפסה שבאמת משתמשים בהם.

הליך אימות הדפסה מפוצל לפי אם משתמשים ב-WPPמשחזרים את כל התורים במכונת בדיקה ושומרים את הפלט מלפני השינוי; אם משתמשים ב-WPP, מפעילים אותו, רושמים את התורים שהוסרו, משווים את הפלט אחרי רישום מחדש של מכשירים תואמים, ובודקים את הנתיב החלופי למכשירים לא תואמים; אם לא משתמשים, מזהים מחדש מכשירים פיזיים שכפופים לשינוי דירוג IPP עם WPP כבוי ומשווים את הפלט, ולכל השאר מאשרים הדפסה בתורים בפועלכןלאכןלאמשחזרים ורושמים את כל התוריםשומרים את תוצאות ההדפסה מלפני השינוימשתמשים ב-WPP?מפעילים ורושמים את התורים שהוסרורושמים מחדש מכשירים תואמים לפי הצורךמשווים עם אותן הדפסות כמו קודםבודקים מכשירים לא תואמים בנתיב החלופימכשיר פיזי שכפוף לשינוי דירוג IPP?מסירים ומזהים מחדש עם WPP כבוימאשרים הדפסה בתורים בפועלרושמים את התוצאות ומשחזרים את מכונת הבדיקה

איור 23: הפלט מלפני השינוי הוא קו הבסיס המשותף, ורק סביבות שמשתמשות ב-WPP מפעילות אותו. סביבות שלא משתמשות בודקות את שינוי דירוג IPP ואת ההדפסה בתורים בפועל.

7.1 הכנה משותפת: משחזרים כל יעד הדפסה במכונת בדיקה, לא בייצור

משתמשים ב-PC עם Windows 11 24H2 ואילך לאימות, ו-לא עושים את זה ב-PC ייצור. לחיבורי רשת, VM שיכול להגיע לאותן מדפסות מספיק. כדי להעריך רישום מחדש ב-USB או תקשורת ישירה, משתמשים במכונת בדיקה פיזית, אלא אם ה-VM יכול להעביר את אותו ממשק USB.

בלי קשר אם משתמשים ב-WPP, שלבים 1 ו-2 למטה שומרים את המצב לפני השינוי.

  1. משחזרים כל תור שהאפליקציה משתמשת בו בשטח. מתקינים לא רק את המדפסות הפיזיות על drivers של יצרן אלא גם מדפסות PDF וירטואליות של צד שלישי ותורי inbox כמו Generic / Text Only, באותה תצורה. רושמים את שמות ה-drivers והגרסאות עם הסקריפט מ-5.1. ה-diff של ההסרה יכול לשפוט רק תורים שקיימים במכונת הבדיקה.
  2. רצים על יכולות ההדפסה ושומרים את הפלט. בודקים את מסכי ההגדרות של נייר, מגש, דופלקס ועותקים, את הדפסת כל דוח, פלט PDF והדפסת תוויות, כדי ליצור קו בסיס להשוואה מאוחרת.
תורים לשחזר במכונת הבדיקהמבין התורים שהאפליקציה משתמשת בהם כפי שנמצאו בספירת 5.1, משחזרים את המדפסות הפיזיות על drivers של יצרן, את המדפסות הווירטואליות כמו PDF של צד שלישי, ואת התורים על drivers inbox כמו Generic / Text Only, כולם במכונת הבדיקה באותה תצורה כמו בשטח, ומראים שרשימת ההסרה בשלב 3 יכולה לשפוט רק תורים שקיימים במכונת הבדיקהספירת 5.1: תורים שהאפליקציה משתמשת בהםמדפסות פיזיות (drivers של יצרן)מדפסות וירטואליות (PDF של צד שלישי וכו')drivers inbox (Generic / Text Only וכו')משחזרים במכונת הבדיקה באותה תצורהשופטים הישרדות עם רשימת ההסרה בשלב 3תורים חסרים לא מופיעים ב-diff ההסרה

איור 24: תור שנעדר ממכונת הבדיקה לא מופיע ב-diff ההסרה, ולכן קודם משחזרים כל תור שהספירה מצאה.

7.2 סביבות שמשתמשות ב-WPP: מפעילים אותו ומאמתים, כולל יעדי ההדפסה שנעלמו

אחרי שלבים 1 ו-2, ממשיכים בסדר הבא.

  1. מפעילים WPP ורושמים את התורים שמוסרים. בחירת “Set up” תחת “Windows protected print mode” ב-“Printers & scanners” באפליקציית Settings מציגה את יעדי ההסרה בדיאלוג.2 כשמפעילים דרך Group Policy, אין דיאלוג, ולכן שומרים את תוצאת Get-Printer לפני החלת ה-policy ומפעילים מחדש את מכונת הבדיקה אחרי ההחלה. מאשרים שהוא מופעל עם IsProtectedPrintEnabled או מסך Settings, ואז לוקחים את הרשימה שוב ורושמים את ה-diff.14
  2. מתקינים מחדש את המדפסות התואמות שהוסרו. מתקינים אותן מחדש עם Windows Ready Print ומאשרים עם הסקריפט מ-5.1 ש-DriverName של המדפסת הפיזית השתנה ל-Microsoft IPP Class Driver.
  3. חוזרים על אותן הדפסות ומשווים עם לפני השינוי. בודקים את הבחירות במסכי ההגדרות, את שחזור ההגדרות השמורות, ואת אובדן יעדי ההדפסה בגלל שינויי שם תור. גם מצליבים את השוליים, הגופנים והקווים של הפלט מול הפלט משלב 2.
  4. מדפיסים מכשירים לא תואמים דרך הנתיב החלופי מפרק 6. משחזרים את המצב שבו “המדפסת אינה ברשימה” ומאשרים שהפלט עדיין עובד. לא רק הקוד שתיקנתם אלא גם הנתיב שסיפקתם הוא יעד אימות.

7.3 סביבות שלא משתמשות ב-WPP: מאמתים את השינוי בבחירת driver בלי להפעיל אותו

בסביבה שהחלטתם לא להשתמש ב-WPP, לא מבצעים את שלבים 3 ו-4. הפעלת WPP מסירה תורים שלמים, מה שמסתיר את אפקט הדירוג לבדו.

יעד הדפסה מה לעשות אחרי שלבים 1 ו-2
מכשיר פיזי עם IPP שכפוף לשינוי הדירוג עם WPP כבוי, מסירים, מזהים מחדש ומתקינים מחדש במכונת הבדיקה. מאשרים עם הסקריפט מ-5.1 אם הוא משתנה ל-IPP class driver, ומבצעים את ההשוואה משלב 5
תורי ענן ותורים וירטואליים אין מכשיר פיזי לזהות מחדש ואין שינוי דירוג, ולכן מאשרים את הפלט משלב 2 בתורים שבאמת בשימוש

7.4 שחזור אחרי אימות והכנת הליך ה-provisioning

מכונת בדיקה ש-WPP הופעל בה באפליקציית Settings המקומית ניתנת לשחזור עם “Turn off”. אם הוחל מ-Group Policy או Intune, נחוץ שינוי policy בצד administrator, ולכן מכינים הליך שחזור שתואם לנתיב ההפעלה.213

כיבוי WPP בחזרה משאיר את המדפסות שהותקנו מחדש עם Windows Ready Print כמו שהן. מדפסות שהיו לא תואמות מותקנות מחדש ידנית.210

ל-provisioning, בונים את policy ה-WPP ואת הליך רישום המדפסות מחדש לתוך מנגנון ההפצה שפורס ב-מ-Group Policy ל-Intune. הפצת drivers של צד שלישי דרך Point and Print דורשת אישורי administrator כברירת מחדל מאז KB5005652 ב-2021,34 ותחת WPP ההפצה עצמה כבר לא קורית.9 בסביבות שמשתמשות ב-WPP, מחליפים הליכים שתלויים בהפצת driver בהחלת policy ובהליך הרישום מחדש האלה.

עדכון הליך ה-provisioningההליך שהפיץ drivers של צד שלישי דרך Point and Print מושמט כי אישורי administrator נדרשים מאז 2021 ותחת WPP ההפצה עצמה כבר לא קורית, ובמקומו policy ה-WPP (Group Policy או OMA-URI) והליך רישום המדפסות מחדש נבנים לתוך מנגנון ההפצהמפיצים drivers של צד שלישי דרך Point and Printאישורי administrator נדרשים מאז 2021אין הפצה בכלל תחת WPPמשמיטים מההליךבונים פנימה את policy ה-WPP והליך הרישום מחדש

איור 25: הליך הפצת drivers מוחלף בהליך להפצת policy ה-WPP ורישום מדפסות מחדש.

8. סיכום

התגובה הנדרשת נקבעת בסדר “האם יעד ההדפסה שורד?” → “במה הקוד תלוי?” → “תחת אילו תנאים מאמתים?”.

ממצא תגובה
התור לא שורד WPP ואי אפשר לרשום מחדש את המדפסת הפיזית קודם מספקים נתיב אחר או מחליטים לא להשתמש ב-WPP
נשמרות הגדרות ספציפיות ל-driver שומרים כוונה במקום מצב, ובודקים יכולות מיד לפני ההדפסה
תלוי בשמות תורים או במדפסות וירטואליות מספקים בדיקות קיום, רישום, התראה ובחירה מחדש של יעד ההדפסה. מייצרים PDFs ישירות עם ספרייה
ה-pass-through לשליחת RAW נעלם תחת WPP מספקים נתיב שאינו תלוי ב-spooler
יעד ההדפסה מאובטח, והאפליקציה רק מציירת בלי תלות ב-driver ספציפי לא משכתבים באופן גורף; מאמתים את הפלט בפועל

תיקון דבר אחד אינו הסוף. אחרי תיקון ההגדרות, ממשיכים לבדוק שמות תורים, מדפסות וירטואליות ושליחת RAW, ולבסוף מאשרים את הפלט כמו בפרק 7. במכשירים ששינוי דירוג IPP יכול לקרות גם בלי WPP, צריך את ספירת התלויות ואת אימות הזיהוי מחדש עם WPP שנשאר כבוי.

עץ החלטה אם לתקן או רק לאמתקודם מחליטים אם תור היעד שורד WPP (תור ענן Universal Print או מדפסת וירטואלית נתמכת ב-WPP) או אם אפשר לרשום מחדש את המדפסת הפיזית עם Windows Ready Print; אם לא, בוחרים בין אספקת נתיב אחר לבין אי-שימוש ב-WPP; אם המכשיר תומך ב-IPP וניתן להחלפה בשינוי הדירוג, בודקים בסדר שמירת הגדרות ספציפיות ל-driver, תלויות בשמות תורים או במדפסות וירטואליות (כולל בתוך SDKs וספריות), ושליחת RAW, ומתקנים כל אחד שחל לפני שממשיכים; לבסוף, סביבות שמשתמשות ב-WPP הולכות לאימות עם WPP מופעל בפרק 7, סביבות שלא שולחות מכשירים פיזיים עם IPP לאימות זיהוי מחדש עם WPP כבוי ותורי ענן או וירטואליים לבדיקות פלט בפועל, ואם לא משתמשים ב-WPP ולהחלפה אין אפקט, ממשיכים לפעול בנתיב הנוכחילאמספקים נתיב אחרלא משתמשים ב-WPPכןלאכןלאכןכןלאכןלאכןלאכןלאכןלאהאם התור שורד WPP או ניתן לרישום מחדש?מה לעשותתומך ב-IPP וניתן להחלפה?תומך ב-IPP וניתן להחלפה?נשמרות הגדרות ספציפיות ל-driver?רק מאמתים (פרק 7)ממשיכים לפעול בנתיב הנוכחימתקנים (5.2)תלוי בשמות תורים או במדפסות וירטואליות?כולל תלויות בתוך SDKs וספריותמתקנים (5.3, 5.4)שולח RAW לתור שלא שורד WPP?מספקים pass-through (פרק 6)משתמשים ב-WPP?מכשיר פיזי עם IPP?אימות זיהוי מחדש בלי WPP (7.3)מאשרים פלט בתורים בפועל

איור 26: קודם מחליטים אם התור שורד WPP; לתלויות קוד, ממשיכים לבדיקה הבאה גם אחרי תיקון אחד, ומאמתים את הנתיב המתוקן בסוף. אם לא משתמשים ב-WPP, מאמתים לא עם הפעלת WPP בפרק 7 אלא בזיהוי מחדש של מכשירים פיזיים עם IPP כש-WPP כבוי ובפלט בפועל בתורי ענן ווירטואליים.

שמים את מועד ההכנה על תוכנית הפריסה שלכם, לא על תאריכי Microsoft

נאמר ש-WPP יופעל כברירת מחדל בעתיד, אבל אין תאריך.10 שמים את מועד ההכנה לפני שמפעילים WPP בעצמכם, או לפני שמפרסים את עדכון התכונות Windows 11 24H2 ואילך לשטח. 1 ביולי 2027 הוא אבן דרך בצד אספקת ה-drivers, לא מועד אחרון לאפליקציות עסקיות.1

איפה לשים את מועד ההכנה בצד האפליקציה העסקיתלוקחים את הרשימה וסופרים עכשיו, מסיימים את שינויי הנתיב והאימות עד המועד שלכם, כלומר לפני שמפעילים WPP בעצמכם או לפני שמפרסים את עדכון התכונות 24H2 ואילך; עצירת עדכוני driver ב-1 ביולי 2027 היא אבן דרך בצד האספקה, לא מועד ההכנה, והמטרה היא להגיע למצב שלא מושפע מהפעלת ברירת המחדל של WPP, שתזמונה לא נקבע, מתי שזה יבואאבן דרך בצד האספקה, לא מועדעכשיו: לוקחים את הרשימה וסופריםשינויי נתיב ואימותמועד: לפני הפעלת WPP בעצמכם / לפני פריסת עדכון התכונותלא מושפעים כש-WPP מופעל כברירת מחדל (תזמון לא נקבע)1 ביולי 2027: עדכוני driver נעצרים

איור 27: שמים את המועד על תוכנית הפריסה שלכם, ולא הופכים את תאריכי אבן הדרך של Microsoft לקו החיתוך שלכם.

מתחילים בלקיחת הרשימה בכל אתר לקוח ובהבנת התלויות בהגדרות, ביעדי הדפסה ובנתיבי פלט. מייצרים PDFs ישירות, ושומרים נתיב אחד לתוויות ולקבלות שבלתי תלוי במחסנית ההדפסה. אחר כך מאמתים הדפסה תחת תנאי הפריסה בפועל.

סביבות שנשארות ב-Windows 10 מחוץ להיקף התוכנית הזו, אבל התמיכה ב-Windows 10 (22H2) בערוץ הרגיל הסתיימה באוקטובר 2025. ל-Enterprise LTSC ול-IoT Enterprise LTSC יש תאריכי סיום שונים לפי מהדורה, ולכן בודקים את מחזור החיים. להחלטות שכוללות ESU ו-LTSC, ראו אפשרויות מעשיות אחרי סיום התמיכה ב-Windows 10, ולמחשבים תעשייתיים, איזה Windows לשים על PC תעשייתי?. ההכנה להדפסה אינה שלמה עד שחוזרים על אימות פרק 7 ב-Windows 11 שאליו עוברים.

מאמרים קשורים

תחומי ייעוץ קשורים

KomuraSoft LLC מטפלת בספירת התלויות ב-printer drivers של אפליקציות עסקיות עם הדפסת דוחות ותוויות, בשכתוב נתיבי הדפסה (יצירת PDF ישירה, שליטה ישירה במדפסות תוויות), ובתכנון תוכניות אימות שמניחות Windows protected print mode.

קישורים

  1. Microsoft Learn, End of servicing plan for third-party printer drivers on Windows. על ציר הזמן שעודכן במאי 2025 (15 בינואר 2026, 1 ביולי 2026 ו-1 ביולי 2027), ההיקף שהוא Windows 11 ואילך ו-Windows Server 2025 ואילך, drivers קיימים שנשארים ניתנים להתקנה בלי תוכנית לבטל פונקציונליות v3/v4, שלושת תנאי חריג החתימה (אין הסמכת Mopria, Windows 10 או מוקדם יותר כיעד הגבוה ביותר, native ARM64), מכשירי USB שיכולים להשתמש בכל פונקציה רק במצב IPP over USB, ו-Microsoft IPP Class Driver שמגיע עם Windows 10 21H2 ואילך.  2 3 4 5 6 7 8 9 10

  2. Microsoft Learn, Overview of Windows protected print mode. על מדפסות שמשתמשות ב-drivers של צד שלישי שמוסרות ומוסרות מ-driver store כשמפעילים, מדפסות שהותקנו עם driver של צד שלישי שצריכות התקנה מחדש גם כשהן Mopria certified, מדפסות תוכנה לא נתמכות (כמו OneNote (Desktop)), XPS ופקס שמוסרים, משתמשים שלא יכולים לכבות כשמפעילים דרך Group Policy, וההליך להפעלה ולכיבוי מאפליקציית Settings.  2 3 4 5 6 7 8

  3. Microsoft Learn, Step 2: A Driver Package for the Device is Selected. על כך ש-Windows מדרג כל חבילה כשמספר חבילות driver מתאימות ומתקין את זו עם הדירוג הטוב ביותר, ובוחר לפי תאריך וגרסה כשהדירוגים שווים. 

  4. Microsoft Learn, IPP printers with the Universal Print Connector. על כך ש-Microsoft IPP Class Driver הוא ה-driver ה-inbox שמתקשר עם מדפסות Mopria certified דרך IPP, ו-IPP כבוי כברירת מחדל בחלק מהמדפסות וצריך להפעיל אותו.  2

  5. Microsoft Learn, Legacy printer driver submission process. על הגשות printer driver, בין WHQL ובין Attestation, שחסומות כברירת מחדל אחרי 15 בינואר 2026 והופכות לסקירה ידנית עם מסמך הצדקה מצורף. 

  6. Microsoft Learn, Windows Print Path Overview. על כך של-Windows יש שני נתיבי הדפסה עיקריים, נתיב ההדפסה GDI ונתיב ההדפסה XPS. 

  7. Microsoft Learn, Discover Windows Ready Print. על כך ש-Windows Ready Print הוא השם שמכסה IPP, eSCL ו-Universal Print, אינו דורש driver של צד שלישי, מתוכנן למדפסות Mopria certified, ובלתי תלוי בארכיטקטורת ה-PC. 

  8. Microsoft Learn, Universal Print troubleshooting - Understanding the stages of a print job. על כך שמדפסות Universal Print משתמשות ב-Universal Print class driver ה-inbox, וה-spooler שולח עבודות לשירות דרך IPP over HTTPS.  2 3

  9. Microsoft Learn, More information on Windows protected print mode for enterprises and developers. על באגי הדפסה שהיוו 9% ממקרי MSRC בשלוש השנים הקודמות, ה-spooler שרץ כ-SYSTEM וטוען קוד של צד שלישי, drivers ישנים שאינם תואמים ל-CFG/CET/ACG, IPP מבוסס HTTP POST ומזוהה לפי URI עם כמה PDLs כמו PWG Raster ו-PDF שמרונדרים בלקוח, הגבלות טעינת מודולים, רינדור XPS בהרשאות משתמש, token מוגבל, איסור יצירת child process, ו-mitigations בינאריים תחת WPP, ו-Point and Print שכבר לא מתקין drivers של צד שלישי.  2 3 4 5 6

  10. Microsoft Learn, Windows protected print mode FAQ. על מדפסות לא תואמות שאינן ניתנות להתקנה מחדש כל עוד הוא מופעל וצריכות התקנה מחדש ידנית אחרי שהוא כבוי, יכולות קנייניות שמסופקות דרך Print Support App, ו-Windows protected print mode שיופעל כברירת מחדל בנקודה עתידית כלשהי.  2 3 4

  11. Microsoft Learn, Printer driver isolation. על משמעות מצבי ה-isolation (Shared / Isolated / None), drivers שלא מצהירים את מילת המפתח DriverIsolation ב-INF רצים בתוך תהליך ה-spooler כברירת מחדל, ומנהלים יכולים לדרוס את הגדרת כל driver מ-Print Management console או מפונקציות spooler.  2

  12. Microsoft Learn, What’s new in Windows 11, version 24H2. על Windows protected print mode שנוסף ב-24H2 ומופעל מאפליקציית Settings או מ-Group Policy. 

  13. Microsoft Learn, Policy CSP - Printers: ConfigureWindowsProtectedPrint. על ה-OS החל שהוא Windows 11 24H2 ואילך, שהוא כבוי כברירת מחדל בלי הגבלות על drivers או יכולות הדפסה, ומפתח ה-registry הממופה ל-ADMX Software\Policies\Microsoft\Windows NT\Printers\WPP והערך WindowsProtectedPrintGroupPolicyState 2 3 4 5

  14. Microsoft Learn, Windows protected print mode for enterprises. על ההליך להפעלה עם Group Policy “Configure Windows protected print”, OMA-URI של Intune, ולקוח עם WPP מופעל שלא יכול לנהל שרת עם WPP כבוי מ-Print Management.  2 3

  15. Microsoft Learn, WindowsProtectedPrintInfo.IsProtectedPrintEnabled Property. על המאפיין הסטטי שהוצג ב-Windows 11 24H2 שמחזיר אם WPP מופעל במכשיר הנוכחי. 

  16. Microsoft Learn, Get-PrinterDriver. על החזרת רשימת printer drivers במחשב שצוין בלי לדרוש אישורי administrator. 

  17. Microsoft Learn, PnPUtil Command Syntax. על כך ש-/enum-drivers מציג חבילות driver של צד שלישי, /class מצמצם לפי שם מחלקה ב-Windows 11 21H2 ואילך, ומריצים אותו מ-Command Prompt שנפתח כ-administrator.  2

  18. Microsoft Learn, How to display printer status in a UWP device app. על ההליך להבחין בין v3 ל-v4 עם get-printer | Select Name, {(get-printerdriver -Name $_.DriverName).MajorVersion}

  19. Microsoft Learn, PnPUtil. על כך שחבילות inbox מוחרגות כשמציגים חבילות ב-driver store, כך שרק חבילות שאינן inbox מוצגות. 

  20. Microsoft Learn, PrintQueue.QueueDriver Property. על קבלת ה-printer driver שתור משתמש בו כ-PrintDriver

  21. Microsoft Learn, PrintServer Class. על כך שהמחלקות במרחב השמות System.Printing אינן נתמכות לשימוש בתוך Windows service או אפליקציית ASP.NET, שם הן עלולות לגרום לירידת ביצועים או לחריגות בזמן ריצה. 

  22. Microsoft Learn, DEVMODEW structure (wingdi.h). על כך שחברים פרטיים שה-driver מגדיר מותרים מיד אחרי החברים הציבוריים עם הגודל שניתן ב-dmDriverExtra, ו-Windows מאמת רק את החלק הציבורי, כך שנתונים פגומים בחלק הפרטי יכולים להקריס את ה-driver. 

  23. dotnet/winforms (GitHub), PrinterSettings.cs. על כך ש-SetHdevmode מעתיק פנימית את הבייטים של dmDriverExtra באזור הפרטי ו-GetHdevmode כותב אותם בחזרה, ושאין נתיב אחר שמחזיק את האזור הפרטי. 

  24. Microsoft Learn, PrinterSettings Class. על כך שההצהרה של .NET Framework נושאת את המאפיין Serializable וההצהרה של .NET לא, ו-GetHdevmode ו-SetHdevmode ממירים אל ומ-DEVMODE 2

  25. Microsoft Learn, SerializableAttribute Class. על כך שכל השדות, פרטיים וציבוריים, עוברים serialize כברירת מחדל בסוג שמסומן במאפיין Serializable, ומשתמשים במאפיין NonSerialized כדי להחריג אותם. 

  26. Microsoft Learn, PaperSize.RawKind Property. על כך ש-RawKind הוא מספר שלם שמייצג ערך סוג נייר סטנדרטי או ערך מותאם. 

  27. Microsoft Learn, PaperSourceKind Enum. על כך ש-Custom, שמייצג מקור נייר ספציפי למדפסת, מוגדר בנוסף לסוגי מקור נייר סטנדרטיים כמו Upper ו-Lower 2

  28. Microsoft Learn, Print Schema. על כך ש-Print Schema מאפשר הרחבות של צד שלישי ואלמנטי Property פרטיים חייבים להשתייך ל-namespace שמשויך בבירור לצד השלישי הזה. 

  29. Microsoft Learn, Print Schema-Related Technologies. על כך ש-PrintTicket הוא היורש של DEVMODE, ו-PrintTickets ספציפיים למכשיר יכולים להכיל הרחבות פרטיות לדגמים מסוימים. 

  30. Microsoft Learn, How to: Validate and Merge PrintTickets. על ההליך של בדיקת היכולות הנתמכות של המדפסת עם PrintQueue.GetPrintCapabilities ומיזוג ואימות הבקשה ל-PrintTicket תקף ספציפי למדפסת עם MergeAndValidatePrintTicket

  31. Microsoft Learn, ConflictStatus Enum. על כך ש-MergeAndValidatePrintTicket גורם ל-driver להחליף הגדרות לא נתמכות ולהחזיר ticket תקף, ומדווח שההחלפה קרתה דרך ConflictResolved ב-ValidationResult.ConflictStatus

  32. Microsoft Learn, WritePrinter function. על ההליך מ-StartDocPrinter עד EndDocPrinter, על כך שהמסמך חייב לתאר במלואם הגדרות שוות-ערך ל-DEVMODE בשפת החומרה כשסוג הנתונים הוא “RAW”, ועל כך ש-WritePrinter היא פונקציה חוסמת שיכולה לגרום לאפליקציה להיראות לא מגיבה כשקוראים לה מ-UI thread. 

  33. Microsoft Learn, RAW data type. על כך שנתוני RAW נשלחים ל-print monitor בלי עיבוד נוסף, עם קובץ שמורכב מפקודות PCL כדוגמה. 

  34. Microsoft Learn, Printing issue troubleshooting guidance. על השינוי בהתנהגות ברירת המחדל של Point and Print מאז KB5005652 שדורש אישורי administrator, והמקרה שבו מדפסות קבלות ותוויות מחוברות USB הפסיקו להדפיס אחרי עדכון ב-2021 והבעיה נפתרה ב-Known Issue Rollback.  2

מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

האם המדפסות והאפליקציות שעובדות היום יפסיקו פתאום להדפיס אחרי יולי 2026 או יולי 2027?
לא. התוכנית של Microsoft היא ניתוק הדרגתי בצד האספקה: drivers חדשים של צד שלישי כבר לא מתפרסמים ב-Windows Update, דירוג ה-drivers מעדיף את IPP class driver, ועדכונים כבר לא מתקבלים. התוכנית קובעת במפורש שהיא לא מבטלת drivers קיימים, ו-drivers קיימים עדיין ניתנים להתקנה מ-installers של היצרן. המצבים המסוכנים הם, במכשירים ש-IPP class driver מתאים להם, הרגע שמחליפים PC או מתקינים מחדש את ה-OS וה-driver מוחלף אוטומטית ב-IPP class driver, והרגע שבו Windows protected print mode מופעל.
האם Windows protected print mode מופעל כברירת מחדל?
נכון לכתיבת המאמר (ספטמבר 2026) הוא כבוי כברירת מחדל, ומפעילים אותו מאפליקציית Settings, מ-Group Policy או מ-Intune. עם זאת, ה-FAQ של Microsoft קובע במפורש שהוא יופעל כברירת מחדל בנקודה עתידית כלשהי. אין תאריך, ולכן ההכנה היא להגיע למצב שבו הפעלה לא גורמת לבעיה לפני שזה קורה.
מה קורה למדפסות תוויות ולמדפסות קבלות?
מדפסות שלא יכולות לקבל הסמכת Mopria מופיעות בין התנאים שבהם חתימת driver ממשיכה להיות מותרת כחריג אחרי 15 בינואר 2026. כך ש-driver של יצרן עשוי להישאר זמין בינתיים, אבל בסביבה שבה Windows protected print mode מופעל, מדפסות שמשתמשות ב-drivers של צד שלישי מוסרות, כך שאי אפשר להשתמש בהן כמו שהן. SDK של יצרן שמדבר עם המכשיר ישירות ב-TCP, USB או serial, או נתיב שמפעיל את המדפסת בשליחת שפת המדפסת ישירות, מנתק אתכם משינויים ב-Print Spooler. SDK שקורא פנימית לתור Windows או ל-driver נעצר באותה מידה כש-driver הצד השלישי נעלם, כך שזה אינו נתיב מילוט.
האם קוד ההדפסה של האפליקציה יכול להישאר על PrintDocument?
נתיב ההדפסה GDI ונתיב ההדפסה XPS נשארים, ו-Microsoft קובעת במפורש שאין לה תוכנית לבטל פונקציונליות של drivers מסוג v3/v4. אפליקציה שמציירת רק עם PrintDocument או FixedDocument היא משהו לאמת, לא משהו לתקן. מה שצריך תיקון הוא קוד ששומר ומשחזר הגדרות ספציפיות ל-driver (החלק הפרטי של DEVMODE או namespace פרטי ב-PrintTicket), קוד שתלוי בשם תור ספציפי או בשם מדפסת וירטואלית (כולל מה ש-SDK של יצרן או ספריית דוחות קורא פנימית), וקוד ששולח נתוני RAW דרך ה-spooler לתור שלא שורד WPP (כמו תור על driver של יצרן). עם זאת, אם מדפסת היעד עצמה היא דגם שאי אפשר לרשום מחדש עם Windows Ready Print, כל התור נעלם תחת Windows protected print mode גם כשהקוד רק מצייר, כך שהכנת נתיב אחר באה קודם.
מאיפה מתחילים?
מתחילים בלקיחת רשימת המדפסות וה-drivers בכל אתר לקוח. Get-Printer ו-Get-PrinterDriver של PowerShell אומרים איזה תור משתמש באיזה driver (v3 או v4, או IPP class driver) בלי הרשאות administrator. אחר כך מצליבים את הרשימה מול התורים שהאפליקציה מציינת בשם, שומרת להם הגדרות, או שולחת אליהם RAW, וממיינים ל-'משאירים כמו שזה', 'מאמתים' ו-'משנים את הנתיב' לפי טבלת ההחלטה במאמר הזה.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

מתמחה בפיתוח תוכנה עבור Windows, ייעוץ טכני וחקירת תקלות, בעיקר בפרויקטים עם מערכות קיימות ובאגים שקשה לשחזר.

קישורים ציבוריים

חזרה לבלוג