HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11PrintingIPPMopriaGroup PolicyIntuneSecurityPowerShell

Windows Protected Print: The Driverless Future, and What Stops Working the Day You Enable It

IA
Imran Awan
21 August 2026

Someone on your team reads that Windows can now print without third-party drivers. It sounds like an unambiguous win. Two decades of print spooler vulnerabilities, gone, because the spooler stops loading vendor code entirely. So they enable Windows protected print mode on a pilot ring, and the pilot ring stops printing.

Not all of it. The queues pointing at the new Mopria certified multifunction devices are fine. The finance team's cheque printer is gone. The label printers in the warehouse are gone. The pull-print client that everyone badges against is gone, because it installed itself as a print monitor DLL, and Windows protected print mode does not load print monitor DLLs any more.

This post is about what Windows protected print mode actually is, in plain English, and how to size that blast radius on your own fleet before you commit to it.

The short version

Windows protected print mode (WPP) makes Windows print only through Windows Ready Print, the inbox Microsoft IPP Class Driver, and blocks third-party print drivers completely. Microsoft documents that turning it on uninstalls printers that use third-party drivers and deletes those drivers from the print driver store. It needs Windows 11, version 24H2 (build 10.0.26100) or later, and it is enabled through one Group Policy setting or one Printers CSP node. It is technically reversible, but reversing it does not put your printers back, so inventory every queue, driver and print monitor first.

The problem: the queues that disappear the day you enable it

Start with the vocabulary, because three names get used interchangeably and they are not the same thing.

IPP is the Internet Printing Protocol. Microsoft describes it as an HTTP-based protocol where each request is an HTTP POST and printers are addressed by URI, for example ipps://printer.example.com/ipp/print. It is a standard, not a Microsoft feature.

Mopria is the alliance of printer manufacturers and software vendors that defines the standards for IPP printing and eSCL scanning. A Mopria certified device is guaranteed to conform. That certification is the practical test of whether a printer works without a driver.

Windows Ready Print is Microsoft's name for Windows' preferred way of talking to printers. It covers IPP, eSCL scanning and Universal Print. It does not require installing third-party drivers.

Windows protected print mode, WPP for short, is the switch. Microsoft's documentation is precise about what it does: it "exclusively uses Windows Ready Print". Exclusively is the operative word. Nothing else gets to print.

So the failure mode is not subtle. Microsoft states plainly that upon enabling WPP, "printers that use third-party drivers are uninstalled". It goes further. The driver is deleted from the print driver store, and it cannot be used while WPP is active.

This removes drivers from the driver store, on every device the policy touches. Microsoft documents that enabling Windows protected print mode uninstalls printers using third-party drivers and deletes the driver from the print driver store. Non-compatible printers cannot be reinstalled while WPP is enabled. Do not pilot this on a ring that contains a business-critical printer you cannot afford to lose for a day.

Here is the honest list of what stops working, taken from Microsoft's own pages rather than from guesswork.

What stops workingWhat Microsoft documents
Third-party v3 and v4 print driversWPP "disables the ability to load third-party drivers". Printers using them are uninstalled and the driver is deleted from the driver store.
Printer port monitors implemented as DLLsMicrosoft names this attack directly: "a printer port monitor can be a Dynamic Link Library (DLL), and attackers would abuse this to load malicious code", and states that legacy APIs are restricted to values that only make sense for IPP.
Modules loaded through print APIs"APIs that allow module loading will be modified to prevent loading of new modules", naming AddPrintProviderW. Only Microsoft signed binaries required for IPP are loaded.
Symbolic-link tricks against the spoolerAttackers used symlinks to make the spooler load code, and Microsoft states "that is no longer possible".
Microsoft XPS Document Writer and Windows Fax and Scan"XPS and fax are removed when Windows protected print mode is turned on." Both need manual reinstall after disabling WPP.
OneNote (Desktop) as a printerTurning on WPP "uninstalls all unsupported software printers on Windows, including OneNote (Desktop)". The replacement is the OneNote (Desktop) Protected virtual printer, shipped by default in OneNote 2410 and later on Windows 11 build 26100 or higher.
Scanning on some multifunction devices"Some compatible devices' scanners are unavailable in Windows protected print mode." The test is again Mopria certification.
Print Management against legacy print serversFrom a WPP-enabled client "you cannot use Print Management to manage servers with Windows protected print mode disabled".
Custom finishing and vendor utilitiesMicrosoft's answer is Print Support Apps. Manufacturers "will still be able to provide custom features via Print Support Apps", distributed through the Store. If your vendor has not shipped one, the feature is simply gone.
Context: this is not a surprise change of direction. Microsoft has published an end-of-servicing plan for legacy v3 and v4 printer drivers. From 15 January 2026, no new printer drivers are published to Windows Update for Windows 11 and later. From 1 July 2026, printer driver ranking is modified to always prefer the Windows IPP inbox class driver. From 1 July 2027, third-party printer driver updates are no longer allowed except for security fixes. WPP is the destination those dates are walking towards.

Why it happens: what WPP actually changes in the print stack

To understand why the change is this blunt, you need the chain that a print job travels today.

An application calls the Windows print APIs. Those APIs hand the job to the Print Spooler service, Spooler, running as C:\Windows\System32\spoolsv.exe. The spooler loads the printer's driver. It calls a print processor, then a language monitor, then a port monitor, to get bytes onto the wire. Most jobs pass through an XPS conversion handled by printfilterpipelinesvc.exe.

Every one of those steps is an opportunity to load somebody else's code into a highly privileged process. Microsoft's own framing of the problem is blunt: print bugs "accounted for 9% of all cases reported to the Microsoft Security Response Center (MSRC) over the past three years", and the spooler "runs as SYSTEM, which is one of the highest privilege levels in Windows".

The design that follows from that is to stop loading the third-party code, and then, because there is no third-party code left to break, tighten everything else. Microsoft documents four changes.

A different spooler process. "When users enable Windows protected print mode, normal spooler operations are deferred to a new Spooler process that implements the Windows protected print mode improvements." So the service name does not change. The process handling your jobs does.

Lower privileges. The new Spooler Worker process runs with "a new restricted token that removes many privileges such as SeTcbPrivilege, SeAssignPrimaryTokenPrivilege, and no longer runs at SYSTEM IL". IL is integrity level.

Per-user XPS rendering. XPS conversion moves out of SYSTEM. Microsoft names the process, PrintFilterPipelineSVC, as "the source of many memory corruption vulnerabilities", and states that running it as the user minimises the impact of those bugs.

Binary mitigations that were previously impossible. Because no third-party binary is in the process, Microsoft can switch on exploit mitigations that only work if every loaded module cooperates. The documented list is Control Flow Guard and Control Flow Enforcement Technology, child process creation disabled, Redirection Guard, and Arbitrary Code Guard.

That last point is the real answer to "why not just harden the old stack". These protections are, in Microsoft's words, "often all or nothing", and decades-old print drivers are not compatible with them. You cannot enable Arbitrary Code Guard in a process that is about to load a driver from 2009.

Gotcha: Point and Print still exists under WPP, and it works differently. Microsoft documents that Point and Print "remains with IPP" but no longer installs drivers. Client and server connect over RPC, both ends use their inbox Microsoft IPP driver, the server talks IPP to the printer, and a Print Support App is installed if one is available. WPP "prevents Point and Print from ever installing third-party drivers". If your print server hands out drivers today, that mechanism is what disappears. Point and Print driver-install hardening in the PrintNightmare sense is a separate topic with its own settings, covered in the sibling post linked in the references.

Two claims are worth quoting exactly, because they are the business case. WPP "prevents the installation of third-party drivers and enables additional security features", and it "mitigates over half of past reported security issues for Windows print". Over half. Not all. That honesty is useful when someone asks whether this ends print vulnerabilities forever.

How to verify: read every surface before you commit

Before any of the configuration, work out what you have. The order matters: state first, then inventory, then the surrounding surfaces.

The documented way to ask whether WPP is on

Microsoft ships an API whose entire job is answering this question. It is Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo, described in the documentation as providing "an API for querying whether Windows protected print mode is enabled on the current device". It has one property, IsProtectedPrintEnabled, and the documented requirement is Windows 11, version 24H2, introduced in 10.0.26100.0.

You can call it from Windows PowerShell. The command below resolves the WinRT type and reads the property. A return of False means WPP is off on this device right now, and True means it is on.

Windows PowerShell 5.1 - run elevated
$t = [Type]::GetType('Windows.Graphics.Printing.ProtectedPrint.WindowsProtectedPrintInfo, Windows.Graphics, ContentType=WindowsRuntime') $t.GetProperty('IsProtectedPrintEnabled').GetValue($null, $null) # Healthy read, WPP off : False # Healthy read, WPP on : True # Broken: $t is null. On PowerShell 7 the WinRT type does not resolve at all, # because PS7 has no WinRT projection by default. That is NOT "WPP is off". # Treat a null type as unknown state and re-run under Windows PowerShell 5.1.
Gotcha, and it is a nasty one for detection scripts. The WinRT type above resolves under Windows PowerShell 5.1 and fails to resolve under PowerShell 7 on the same machine. A script that wraps the call in a bare try/catch and returns $false on failure will report "WPP is disabled" across a whole fleet of PowerShell 7 runs. Distinguish "read failed" from "read returned false". The companion script does exactly that.

Registry: the policy tree and the print stack

Two parent keys matter. The first is the Printers policy tree, which is where Group Policy and the Printers CSP write. The parent key is stated once here, so the table stays readable.

HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers
Subkey and valuePolicy it backsNotes
WPP\WindowsProtectedPrintGroupPolicyStateConfigure Windows protected printThe documented ADMX and CSP backing store for WPP. Present means policy-managed. Absent means unmanaged, not off.
IPP\RequireIppsRequire IPPS for IPP printersOnly IPP printers supporting IPPS can be installed. Documented as Windows Insider Preview at the time of writing.
IPP\AlwaysSendIppPageCountsAlways send job page count information for IPP printersRenders all pages up front and sends a total page count. Matters if your accounting system counts pages.
Driver\ConfigureDriverValidationLevelManage Print Driver signature validationDocumented values 0 to 4, default 4, "Allow all validly signed drivers". Useful as a staging step before WPP.
PointAndPrint\RestrictDriverInstallationToAdministratorsLimits print driver installation to AdministratorsCovered in depth in the sibling PrintNightmare post. Listed here only so you can see it is a different key.

This is what the managed state looks like in Registry Editor on a device where the policy has landed. The value name is long, so the panel wraps it rather than clipping it.

Registry Editor
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\WPP
Name   WindowsProtectedPrintGroupPolicyState
Type   REG_DWORD
Data   set by the ADMX policy
Illustrative. On an unmanaged device the WPP subkey does not exist at all. Microsoft documents the key and value name in the Printers CSP article but does not publish the numeric encoding of the data, so read the state with the API instead of comparing this number.

The second parent key is the live print stack itself. This is where you read what is actually installed, rather than what policy asked for.

HKLM\SYSTEM\CurrentControlSet\Control\Print
SubkeyWhat lives thereWhy it matters for WPP
Monitors\<name>\DriverThe DLL for each port monitor and language monitorAny non-Microsoft DLL here is a module that stops loading under WPP. This is where vendor pull-print hooks hide.
Environments\<arch>\DriversInstalled drivers, split by version subkey such as Version-3 and Version-4The v3 versus v4 split you are inventorying.
ProvidersPrint providers, for example Internet Print Provider and LanMan Print ServicesProviders are the loadable modules that AddPrintProviderW module blocking is about.
Printers\<queue>Per-queue configurationWhere each installed queue is described. Also where an undocumented readiness hint appears, discussed below.
Observed and undocumented: do not build detection on this. On shipping Windows 11 builds, some queues carry a REG_DWORD named WindowsProtectedPrintSupportVerified under HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\<queue>. On the test device it is present and set to 1 for two Brother USB printers and for the inbox virtual queues, and entirely absent for the two network queues behind a pull-print port. That pattern is suggestive, and it lines up with Microsoft's statement that some Mopria certified printers are installed with third-party drivers and can be reinstalled after WPP is enabled. Microsoft does not document this value anywhere. An undocumented value can change in any update, so use it as a hint during discovery and never as compliance logic.

PowerShell: the inventory that actually answers the question

Three inbox cmdlets do the work. Get-Printer lists queues, Get-PrinterDriver lists drivers with their major version, and Get-PrinterProperty reads per-queue properties. Joining the first two on driver name is what turns a list into a verdict.

PowerShell - inventory queues and driver versions
Get-PrinterDriver | Select-Object Name, MajorVersion, Manufacturer, PrinterEnvironment | Sort-Object MajorVersion, Name | Format-Table -AutoSize # MajorVersion 3 = a v3 driver. MajorVersion 4 = a v4 driver. # Healthy for WPP: Manufacturer Microsoft and the name is a class driver, # for example "Microsoft IPP Class Driver" or "Universal Print Class Driver". # At risk: any row where Manufacturer is a printer vendor. WPP deletes it. Get-Printer | Select-Object Name, DriverName, PortName, Type | Format-Table -AutoSize # Cross-reference DriverName against the table above. A queue is only safe # if the driver it binds to is an inbox class driver. Get-PrinterProperty -PrinterName 'Microsoft Print to PDF' | Select-Object PropertyName, Value # Per-queue properties. Useful for spotting vendor finishing options that # exist only because a vendor driver is providing them. pnputil /enum-drivers | Select-String 'Class Name:\s+Printer' # Read-only view of printer-class driver packages staged in the driver store. # These are the packages WPP deletes. Counting them sizes the rollback cost.

System files and DLLs: what is in the flow

Naming the binaries makes the chain concrete. Every path below is under C:\Windows\System32 unless stated.

BinaryRole in the print flow
spoolsv.exeThe Print Spooler service host. Under WPP, operations are deferred to a new spooler process with a restricted token.
localspl.dllThe local print provider, and also the DLL behind the inbox Local Port monitor.
win32spl.dllThe remote print provider, used when a client talks to a print server.
inetpp.dllThe Internet Print Provider, the module behind IPP printing.
printfilterpipelinesvc.exeThe XPS filter pipeline. Under WPP this runs as the user rather than SYSTEM.
printisolationhost.exeDriver isolation host. This is the sandbox that exists precisely because drivers are loaded today.
tcpmon.dll, usbmon.dllInbox Standard TCP/IP Port and USB Monitor port monitors.
The IPP class driver packageStaged in the driver store as prnms012.inf. On the test device the driver's data file is MSIPP.xml in the same driver store folder. Verify on your own build with Get-PrinterDriver -Name 'Microsoft IPP Class Driver' | Format-List *.

Event Viewer: honest about what exists

Microsoft does not publish a set of event IDs specific to Windows protected print mode. Saying so is more useful than inventing some. What does exist is the standard print channel set, and several of those IDs are exactly the evidence you want when WPP removes a queue or blocks a module.

Event Viewer › Applications and Services Logs › Microsoft › Windows › PrintService
Microsoft-Windows-PrintService/Admin       enabled by default
Microsoft-Windows-PrintService/Operational DISABLED by default
Microsoft-Windows-PrintService/Debug       analytic channel
Microsoft-Windows-PrintBRM/Admin           printer migration
Microsoft-Windows-TerminalServices-Printers/Admin

The channel is stated once above. The IDs below were read from the provider manifest on a Windows 11 build 26200 device with Get-WinEvent -ListProvider Microsoft-Windows-PrintService, so you can reproduce the list yourself rather than trusting this table.

Event IDMessage, abbreviatedWhy it matters for WPP
300Printer was createdWhat you expect to see as queues are reinstalled on Windows Ready Print.
301Printer was deleted, and users will no longer be able to print to this printerThe signature of WPP removing a non-compatible queue. Count these after enablement.
307Document owned by user was printed on printer through portProof that printing still works. Operational channel only, and it is off by default.
316Printer driver was added or updatedDriver churn. Under WPP you should stop seeing third-party names here.
372The document failed to print on printerThe first thing to check when a user says printing broke after enablement.
808The print spooler failed to load a plug-in moduleThe closest thing to a module-blocking signal. Expect these where a vendor monitor or provider is refused.
842Print job sent through print processor on printer, driver, in isolation modeRecords the isolation mode used. Useful as a before-and-after comparison.
Tip: turn the Operational channel on before your pilot, not after. Microsoft-Windows-PrintService/Operational is disabled by default, confirmed on a current build. Enable it on your pilot ring first, or you will have no per-job record to compare against. Microsoft also documents that event 307 shows a generic document name unless the "Allow job name in event logs" policy under Computer Configuration > Administrative Templates > Printers is enabled.

Log files, services and scheduled tasks

There is no dedicated WPP text log. The driver activity, however, lands in the standard device install log, which is genuinely useful here because WPP's most disruptive action is a driver removal.

PathWhat to search forHealthy versus broken
C:\Windows\INF\setupapi.dev.logPrinter, and the INF name from Get-PrinterDriver, for example koaxcj__.infHealthy after enablement: entries showing the vendor INF being removed and the IPP class driver package being used. Broken: repeated install attempts for a vendor INF, which means something is still trying to push a driver that WPP will refuse.
C:\Windows\System32\spool\drivers\x64\3Vendor DLL names such as a language monitor DLLThis directory holds the v3 driver payloads. Its contents before enablement are your rollback shopping list.

Services are simpler than people expect. The service name does not change under WPP. On a current build the Print Spooler is configured as below, and the two supporting services are demand-start.

ServiceDisplay nameExpected state
SpoolerPrint SpoolerRunning, Automatic, image C:\Windows\System32\spoolsv.exe, running as LocalSystem, depends on RPCSS and http. Unchanged by WPP at the service level. What changes is the process that handles operations.
PrintNotifyPrinter Extensions and NotificationsManual start, normally stopped until needed.
PrintWorkflowUserSvc_*PrintWorkflow per-user serviceManual, per-user instance. This is the plumbing that Print Support Apps use, so it matters more after migration, not less.

Three scheduled tasks live under the printing path. None of them enable or disable WPP, but they are worth knowing about when you are explaining why a queue reappeared.

Task SchedulerMicrosoftWindowsPrinting
TaskTypical state on a client
PrinterCleanupTaskReady. Housekeeping for stale printer state.
PrintJobCleanupTaskDisabled on the test device.
EduPrintProvReady. Education printer provisioning.

Does Microsoft ship a readiness tool?

No. This is worth being direct about, because it is the gap this post exists to fill. Microsoft's documented readiness guidance is manual and per-device: open Settings, look at each installed printer for the compatibility shield icon, and check the Mopria certified products list for anything with a scanner. There is no documented fleet inventory report, no Intune report, and no supported cmdlet that returns "this device is ready".

That is what the companion script does. It reads WPP state from both documented surfaces, joins every queue to its driver, classifies each driver as inbox-driverless, inbox-virtual, v3 or v4, flags every non-Microsoft print monitor DLL, and prints a blast-radius count. It never enables WPP and never removes a driver.

github.comImran76Awan/Windows-11-Scriptswindows-protected-print-ipp-migration

The fix: enable it deliberately, in waves

There are three ways to turn WPP on, and they are not equivalent. Settings is per-device and user-reversible. Group Policy and the Printers CSP are managed and, importantly, take the local off switch away.

Group Policy: the exact path

The setting lives in the Printers node of Administrative Templates, backed by Printing.admx. The steps below are Microsoft's own, expanded so nothing is assumed.

Computer ConfigurationAdministrative TemplatesPrintersConfigure Windows protected print
  1. Press Start and open the Local Group Policy Editor, or open your domain Group Policy Management Console and edit the GPO you want to carry this.
  2. Expand Computer Configuration.
  3. Expand Administrative Templates.
  4. Select Printers.
  5. Right click Configure Windows protected print and choose Edit.
  6. Select the Enabled radio button.
  7. Click Apply, then OK.
  8. Confirm the result on a target device by reading IsProtectedPrintEnabled with the PowerShell shown earlier. Do not confirm it by looking only at the registry, because the policy value encoding is not documented.

Intune: the CSP node, and the Settings Catalog equivalent

Microsoft documents the Intune configuration as a custom OMA-URI. The node is device-scoped, ADMX-backed, and documented as Windows 11, version 24H2 [10.0.26100] and later on Pro, Enterprise, Education and IoT Enterprise.

intune.microsoft.comDevicesConfigurationCreate policy
  1. Sign in to the Microsoft Intune admin center at intune.microsoft.com.
  2. Go to Devices, then Configuration.
  3. Click Create, then New policy.
  4. Set Platform to Windows 10 and later.
  5. Set Profile type to Templates, choose Custom, then click Create.
  6. Give the profile a name, for example Windows protected print - ring 1, then click Next.
  7. On Configuration settings, click Add.
  8. Set OMA-URI to ./Device/Vendor/MSFT/Policy/Config/Printers/ConfigureWindowsProtectedPrint.
  9. Set Data type to String.
  10. Set Value to <enabled/>, exactly as written, angle brackets included.
  11. Click Save, then Next.
  12. Assign the profile to your pilot group only. Not to All Devices. Review and create.

The Settings Catalog is the other route. Because this is an ADMX-backed policy from Printing.admx, it also appears in the catalog's Administrative Templates category under Printers, with the same friendly name, Configure Windows protected print. Microsoft's WPP documentation only publishes the custom OMA-URI, so if your tenant shows both, prefer whichever your organisation already standardises on and do not deploy both at once.

DevicesConfigurationSettings catalogAdministrative TemplatesPrinters

Settings: the per-device path, and the reversibility reality

End users and single-device testing use Settings. The path and the wording are documented.

SettingsBluetooth & devicesPrinters & scannersPrinter preferencesWindows protected print mode
  1. Open Settings and go to Bluetooth & devices, then Printers & scanners.
  2. Check each installed printer for the WPP compatibility icon.
  3. For any device with a scanner, confirm it on the Mopria certified products list. If it is not certified, only printing will be available.
  4. Scroll to Printer preferences and under Windows protected print mode select Set up.
  5. Select Yes, continue for the prompts. The dialog identifies printers that need reinstalling.
  6. Reinstall any compatible printers that were removed.
  7. To reverse it later, return to the same place and select Turn Off, then Yes.
Reversible is not the same as undoable. Microsoft documents all of the following. Disabling WPP does not reinstall your non-compatible printers, and you have to add them back manually. XPS and Windows Fax and Scan need reinstalling by hand through Windows Features and Optional features. A Mopria printer that was originally installed with a vendor driver keeps using Windows Ready Print after WPP is disabled, unless you remove and reinstall it. And if WPP was enabled by Group Policy, the user cannot turn it off at all without contacting an administrator. Plan the rollback as a rebuild, not as a switch flip.

Defender and security policy: what actually applies

Be careful here, because it is easy to overclaim. Windows protected print mode is not a Microsoft Defender feature and it is not an Endpoint Security profile. It is an ADMX-backed Printers policy. There is no Defender Antivirus setting, no attack surface reduction rule and no App Control policy that turns it on.

Two genuine adjacencies exist. First, WPP applies exploit mitigations itself, and those mitigations are the same primitives you know from Exploit Protection: Control Flow Guard, CET, Arbitrary Code Guard, child process creation blocking and Redirection Guard. You do not configure them per-process for the spooler. WPP switches them on because there is no third-party binary left to break them. Second, Microsoft Defender for Endpoint device control includes printer protection, which restricts which printers a user may print to. That is a different control answering a different question. It governs destinations, not which drivers the spooler will load. Deploying one does not give you the other.

A migration order that does not create an outage

  1. Run the readiness inventory across the fleet and aggregate the JSON. You are looking for the count of at-risk queues per device, and the distinct list of vendor drivers and print monitors.
  2. Take the distinct printer models from that list and check each against the Mopria certified products list. Confirm IPP is enabled on the device itself, because Microsoft's guidance is explicit: "To use Windows protected print mode, ensure printers have IPP enabled."
  3. For every vendor feature someone depends on, such as secure release, stapling or account codes, ask the vendor whether they ship a Print Support App. That is Microsoft's documented replacement path.
  4. Reinstall pilot printers on the inbox IPP class driver while WPP is still off. This decouples "does driverless printing work here" from "does WPP break something else".
  5. Only then enable WPP on the pilot ring, with the PrintService Operational channel already turned on.
  6. Compare event 301 counts against your at-risk list. If a queue disappeared that your inventory said was ready, your inventory logic has a gap. Fix it before ring two.

Proof it worked: a real readiness run

The output below is a genuine run of the companion script on a Windows 11 build 26200 device, not an illustration. Device and print server identifiers have been replaced with redaction markers. Everything else, including the vendor names and the driver versions, is as it came out.

Get-ProtectedPrintReadiness.ps1 - Windows PowerShell 5.1
== Windows protected print mode state ================================ API IsProtectedPrintEnabled : False -> WPP is OFF GPO WindowsProtectedPrintGroupPolicyState : absent No Group Policy or Printers CSP value is applied. Absent means "unmanaged", not "off". # Healthy: the API answered. That is the state you can trust. == Printer queue readiness (the blast radius) ======================== Printer Driver Ver Verdict \\PRINTSRV01\Queue-Colour KONICA MINOLTA C650iSeriesPCL v3 AT-RISK-V3 \\PRINTSRV01\Queue-Mono KONICA MINOLTA C650iSeriesPCL v3 AT-RISK-V3 Brother DCP-1610NW series Brother DCP-1610NW series v3 AT-RISK-V3 Brother DCP-1610W series Brother DCP-1610W series v3 AT-RISK-V3 Microsoft Print to PDF Microsoft Print To PDF v4 READY-INBOX OneNote (Desktop) - Protected Microsoft Virtual Print Class v4 READY-INBOX OneNote (Desktop) Send to Microsoft OneNote 16 v4 REVIEW # Four of seven queues would be uninstalled. Two survive. One needs a look. == Port monitors and language monitors =============================== Monitor Dll WppVerdict Standard TCP/IP Port tcpmon.dll INBOX USB Monitor usbmon.dll INBOX Local Port localspl.dll INBOX C650iSeriesPCL Language Monitor KOAXCJ_L.dll THIRD-PARTY # Broken-under-WPP: a vendor language monitor DLL. This is the module that # stops loading, and the reason pull-print clients break silently. == Blast radius summary ============================================== WPP state : disabled Queues that keep working : 2 Queues needing manual review : 1 Queues WPP would uninstall : 4 Third-party v3 drivers : 6 Third-party v4 drivers : 0 Third-party print monitors : 1 4 queue(s) on this device would be uninstalled if you enabled WPP now.

Read that output as a decision, not a report. Four of seven queues on one ordinary laptop would vanish. Six third-party v3 drivers would be deleted from the driver store. One vendor language monitor DLL, the pull-print hook, stops loading. Multiply that by a fleet and you have the change-advisory conversation you need to have before, not after.

The same script run under PowerShell 7 on the same device returns WPP=unknown rather than WPP=disabled, because the WinRT type does not resolve there. That is the honest answer, and it is the whole reason the script separates "read failed" from "read returned false".

Tip: collect the JSON, not the console text. Run the script with -JsonPath to a per-device file, gather them centrally, and count at-risk queues by model. The distinct list of vendor drivers across the fleet is usually short, often under a dozen models, and each one is a single yes-or-no question to the manufacturer about Mopria certification. That is a tractable project. Auditing thousands of devices by opening Settings on each is not.

References

Community deep-dives, each fetched and confirmed on topic

AuthorPostWhy it is worth reading
Martin BengtssonWindows Protected Print: Securing Printing on Windows 11 with Microsoft IntuneWalks the Intune deployment end to end and is clear about the spooler privilege changes.
Peter van der WoudeGetting started with Windows protected print modeThe cleanest step-by-step on the configuration itself, from the Intune side.

The sibling post on this site covers Point and Print driver-install hardening after PrintNightmare, including RestrictDriverInstallationToAdministrators and the Point and Print Restrictions settings. That is the interim control for fleets that cannot move to WPP yet. This post is about the destination.

PowerShell — companion script

Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-ProtectedPrintReadiness.ps1 — Reports Windows protected print mode (WPP) state on this device and builds a
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows 11
DNS over HTTPS in Windows 11: encrypting resolution without…
Windows 11 ships a DNS over HTTPS client that most estates have never configured. Here is…
Windows 11
Hardening Remote Desktop on Windows 11: NLA, encryption level,…
Enabling RDP is one toggle. Hardening it is a dozen settings across the registry, Group…
Windows 11
Windows Sandbox: the disposable VM in the box, and the .wsb…
Windows Sandbox gives every Windows 11 Pro, Enterprise and Education device a throwaway…