Windows Server 2019 RDP: stampa reindirizzata bloccata dopo KB5035849 – diagnosi, fix e best practice (2025)

Su Windows Server 2019 con RDS, dopo KB5035849 (Patch Tuesday 12/03/2024) molti ambienti hanno visto bloccarsi la stampa da stampanti reindirizzate in RDP. Qui trovi diagnosi tecnica, cause probabili, procedure risolutive e pratiche di gestione aggiornate a settembre 2025.

Indice

Sintesi tecnica del problema

AspettoDettagli
SintomoDopo l’installazione del cumulativo KB5035849 (12 marzo 2024) su Windows Server 2019 con RDS, la stampa tramite stampanti reindirizzate in RDP fallisce; l’utente riceve errori come The handle is invalid o impossibilità di connettersi alla stampante. L’accesso con mstsc /admin invece funziona. [1]
AmbitoSession Host e Broker Windows Server 2019; qualunque client RDP con Easy Print o driver nativi; problema riproducibile su più ambienti e vendor. [2]
Aggiornamenti coinvoltiKB5035849 (12 mar 2024) – origine del guasto. KB5037425 (25 mar 2024, OOB) – risolve perdita di memoria LSASS ma non la stampa. KB5039705 (23 mag 2024, OOB) – sostituisce alcuni file dello spooler; correzione parziale e non sempre efficace. [3]

Come funziona Easy Print in RDP (e perché si rompe)

Easy Print usa il formato XPS per incapsulare i job di stampa generati nella sessione RDP. Sul Session Host, il servizio Print Spooler passa il rendering a componenti XPS (tra cui MXDWDRV.DLL, il driver del “Microsoft XPS Document Writer”). Se questa DLL è incompleta o corrotta, lo spooler non riesce ad aprire un handle valido per i dispositivi reindirizzati e la stampa fallisce.

Le policy di sicurezza introdotte dopo CVE‑2021‑34481 (rafforzamento delle restrizioni Point‑and‑Print) possono impedire al client di caricare/aggiornare componenti durante la sessione utente. Il risultato è un vicolo cieco: Easy Print cerca il driver lato server, ma quel driver è danneggiato; il client non può sostituirlo perché bloccato dalle policy.

Diagnosi e causa probabile

  • Il cumulativo di marzo distribuisce una versione tronca (≈ 840 KB) di MXDWDRV.DLL nella cartella C:\Windows\System32\spool\drivers\x64\3. La versione funzionante pesa tipicamente ≈ 880 KB (es. 0.3.17763.4492 o precedente). [2]
  • Easy Print richiama lo stack XPS: con una DLL tronca, lo spooler non riesce a creare l’handle e restituisce errori generici (handle non valido) o mancata connessione alla stampante.
  • Le restrizioni Point‑and‑Print, se impostate in modo rigido (solo amministratori), impediscono qualsiasi fallback del driver in sessione, aggravando il problema.

Verifica rapida sul server

  1. Apri una PowerShell elevata e controlla dimensione e versione del file: Get-Item "C:\Windows\System32\spool\drivers\x64\3\MXDWDRV.DLL" | Select-Object Length,VersionInfo Se la dimensione è ~ 840 KB, il file è con alta probabilità affetto.
  2. Controlla i log: Event Viewer > Applications and Services Logs > Microsoft > Windows > PrintService > Operational (abilita il log se disattivato) per errori durante la creazione del job in sessione RDP.
  3. Prova comparativa:
    • Sessione RDP normale: stampa reindirizzata fallisce.
    • mstsc /admin: stampa dal server funziona → indica un problema nello stack della sessione RDS, non un guasto fisico della stampa.

Mappa decisionale delle soluzioni

ScenarioIntervento suggeritoProContro/Rischi
Produzione bloccata, necessità di ripristino immediatoRipristino manuale di MXDWDRV.DLL con copia funzionante (≈ 880 KB) e riavvio dello spoolerRiparte subito; nessun riavvio host; minimo impatto utentiWorkaround: richiede una “gold copy” affidabile e controllo post‑patch
Compliance patch prioritaria, finestre di manutenzione disponibiliApplicare cumulativi post‑luglio 2024 e verificare che la DLL aggiornata venga effettivamente distribuitaSoluzione allineata al canale ufficialeNon sempre sovrascrive la DLL “fissata” nel driver store
DLL rimane tronca dopo l’updatePulizia del driver store con pnputil e reinstallazione componenti spoolerElimina versioni “bloccate” del driverOperazione delicata: richiede inventario e test
Vincoli forti su Point‑and‑PrintValutare GPO temporanea: RestrictDriverInstallationToAdministrators = 0 o Approved ServersPermette al client di caricare il driver in sessioneRischio sicurezza: usare solo come mitigazione temporanea
Ambienti in refreshPassaggio a Windows Server 2022/2025 LTSC per i nuovi Session HostStack di stampa aggiornato; problema non presenteCosto/complessità di migrazione

Procedura dettagliata: ripristino di MXDWDRV.DLL

È la soluzione più diffusa e a basso rischio quando serve ripartire subito. [2]

Prerequisiti

  • Una copia buona di MXDWDRV.DLL da un Server 2019 non affetto o da backup (≈ 880 KB, es. 0.3.17763.4492 o precedente).
  • Permessi amministrativi sul Session Host.
  • Finestra di 1–2 minuti per riavviare il servizio Print Spooler.

Passi operativi

  1. Blocca temporaneamente nuove sessioni o informa gli utenti.
  2. Apri PowerShell elevata ed esegui: $spoolPath = "C:\Windows\System32\spool\drivers\x64\3" $goodDll = "\\fileserver\gold\MXDWDRV.DLL" # percorso della copia buona $backupDir = "$spoolPath\backupmxdw$(Get-Date -Format yyyyMMdd_HHmmss)" Stop-Service -Name Spooler -Force New-Item -ItemType Directory -Path \$backupDir -Force | Out-Null Copy-Item -Path "\$spoolPath\MXDWDRV.DLL" -Destination \$backupDir -ErrorAction SilentlyContinue Copy-Item -Path \$goodDll -Destination "\$spoolPath\MXDWDRV.DLL" -Force Start-Service -Name Spooler Verifica (Get-Item "\$spoolPath\MXDWDRV.DLL" | Select-Object FullName, Length, @{n="Version";e={$\_.VersionInfo.FileVersion}})
  3. Chiedi agli utenti di disconnettersi e rientrare o esegui un logoff forzato delle sessioni inattive; in molti casi la stampa riparte subito senza necessità di nuovo login.

Nota: in alcuni ambienti il file può essere in uso da processi di stampa residui. Se Stop-Service Spooler non basta, termina eventuali spoolsv.exe zombie o attendi il rilascio dell’handle.

Correzioni Microsoft e stato patch

  • KB5037425 (25 mar 2024, OOB): mitiga perdita di memoria LSASS; non risolve il blocco di stampa RDP. [3]
  • KB5039705 (23 mag 2024, OOB): aggiorna componenti dello spooler; ha risolto in alcuni ambienti ma non universalmente. [3]
  • Cumulativi luglio 2024 e successivi: includono una DLL corretta; tuttavia, se la versione tronca è già “fissata” nel driver store, la sostituzione può non avvenire automaticamente.

Quando l’update non cambia nulla

Se dopo l’installazione delle patch la dimensione di MXDWDRV.DLL resta ~ 840 KB, il problema è nel driver store. In questo caso:

  1. Inventaria i driver installati: pnputil /enum-drivers > C:\Logs\DriverStore.txt
  2. Identifica i pacchetti MXDW correlati (oemXX.inf) e rimuovili con disinstallazione forzata: pnputil /delete-driver oem42.inf /uninstall /force
  3. Reinstalla il pacchetto cumulativo più recente o ripristina manualmente la DLL buona.

Molti amministratori riportano che pulizia del driver store + update recente → rimozione definitiva dell’anomalia. [4]

Policy e sicurezza: cosa toccare, cosa evitare

Per sbloccare un ambiente d’emergenza puoi allentare temporaneamente le restrizioni Point‑and‑Print. Valuta attentamente l’impatto sicurezza e ripristina le impostazioni appena possibile.

GPO/RegistroImpostazioneEffettoAvvertenze
RestrictDriverInstallationToAdministrators0 (temporaneo)Permette installazione driver di stampa in sessione utenteEspone a rischio se mantenuto; limitare l’ambito e la durata
Point and Print – Approved ServersElenca solo i tuoi print serverConsente driver da fonti noteRichiede manutenzione dell’elenco

Script di controllo post‑patching

Automatizza la verifica della DLL dopo ogni Patch Tuesday. Lo script seguente controlla una lista di Session Host, salva log e (opzionalmente) ripristina la DLL buona se trova la versione tronca.

param(
  [Parameter(Mandatory=$true)][string[]]$Servers,
  [Parameter(Mandatory=$true)][string]$GoldDllPath,
  [switch]$AutoFix
)

$Report = @()
foreach ($s in $Servers) {
  try {
    $path = "\\$s\C$\Windows\System32\spool\drivers\x64\3\MXDWDRV.DLL"
    $fi = Get-Item $path -ErrorAction Stop
    $size = $fi.Length
    $ver  = $fi.VersionInfo.FileVersion

    $status = if ($size -lt 900kb) { "SUSPECT" } else { "OK" }

    if ($status -eq "SUSPECT" -and $AutoFix) {
      Invoke-Command -ComputerName $s -ScriptBlock {
        param($Gold)
        Stop-Service Spooler -Force
        Copy-Item -Path $Gold -Destination "C:\Windows\System32\spool\drivers\x64\3\MXDWDRV.DLL" -Force
        Start-Service Spooler
      } -ArgumentList $GoldDllPath
      $status = "FIXED"
      $fi = Get-Item $path
      $size = $fi.Length
      $ver  = $fi.VersionInfo.FileVersion
    }

    $Report += [pscustomobject]@{
      Server = $s; Size = $size; Version = $ver; Status = $status
    }
  } catch {
    $Report += [pscustomobject]@{
      Server = $s; Size = $null; Version = $null; Status = "ERROR: $($_.Exception.Message)"
    }
  }
}

$ts = Get-Date -Format "yyyyMMdd_HHmmss"
$csv = "C:\Logs\RDPPrintDLLAudit$ts.csv"
$Report | Export-Csv -NoTypeInformation -Path $csv
Write-Host "Report salvato in $csv"
$Report

Verifica end‑to‑end dopo il fix

  1. Dalla sessione RDP, stampa una pagina di prova su una stampante reindirizzata e verifica che lo spooler generi job XPS senza errori.
  2. Controlla il log PrintService/Operational per assenza di eventi di errore durante la creazione del job.
  3. Ripeti il test da un secondo client (versione RDP differente) per escludere fattori lato endpoint.
  4. Se usi anche driver nativi, verifica una stampante Easy Print e una con driver del produttore.

Stato aggiornato a settembre 2025

  • Le patch da luglio 2024 in poi includono una MXDWDRV.DLL corretta, ma la distribuzione è stata incoerente: in presenza di driver store “bloccato”, la DLL ridotta resta in uso.
  • Gli ambienti che hanno applicato KB5039705 o cumulativi successivi e ripulito il driver store (pnputil /delete-driver oemXX.inf /uninstall /force) riferiscono la scomparsa definitiva del problema. [4]
  • Non risultano KB ufficiali dedicati specificamente al malfunzionamento Easy Print su Server 2019; il tema appare solo in release notes generiche.

Checklist di triage veloce

  • La stampa fallisce solo in RDP e solo per stampanti reindirizzate? → → Vai a verifica DLL.
  • mstsc /admin stampa correttamente? → → Lo stack RDS/Easy Print è il probabile colpevole.
  • MXDWDRV.DLL è ~ 840 KB? → → Ripristina la DLL o aggiorna + pulisci driver store.
  • Patch recenti installate ma DLL invariata? → Pulisci driver store e reinstalla.
  • Vincoli Point‑and‑Print stringenti? → Valuta GPO temporanee per sbloccare il caricamento driver del client (solo se necessario).

Domande frequenti

Perché mstsc /admin stampa mentre la sessione RDS normale no?

/admin forza la sessione console (Session 0) e segue percorsi diversi per driver e reindirizzamenti; in molti ambienti ciò evita lo stack Easy Print. Se nella console la stampa funziona, la tua infrastruttura di stampa è sana e il problema è specifico del canale RDS/Easy Print.

Disattivare Easy Print risolve?

Può eludere il problema ma non è consigliato a lungo termine: perderesti i vantaggi di compatibilità e gestione centralizzata. Meglio ripristinare MXDWDRV.DLL e mantenere Easy Print attivo.

È sicuro impostare RestrictDriverInstallationToAdministrators=0?

Solo come mitigazione temporanea e in ambienti controllati. Appena ripristinata la DLL o l’aggiornamento, torna alla configurazione sicura.

Serve riavviare il server?

No, di norma basta riavviare il servizio Print Spooler e far riconnettere le sessioni. In casi isolati, un riavvio può aiutare a rimuovere handle bloccati o cache difettose.

Buone pratiche raccomandate

  1. Valuta la versione di MXDWDRV.DLL Get-Item "C:\Windows\System32\spool\drivers\x64\3\MXDWDRV.DLL" | Select Length,VersionInfo Se la dimensione è ≈ 840 KB sostituisci manualmente o aggiorna con un cumulativo recente.
  2. Mantieni un ambiente di test RDS dove applicare Patch Tuesday e OOB prima della produzione. [4]
  3. Automatizza il controllo dei file dello spooler con uno script post‑patching che confronti hash/size della DLL e ripristini la copia buona da un archivio centralizzato.
  4. Documenta il driver store dopo ogni aggiornamento: pnputil /enum-drivers > C:\Logs\DriverStore_<data>.txt
  5. Pianifica migrazione a Windows Server 2022 o 2025 LTSC se il carico di patch e workaround diventa eccessivo.

Procedure di rollback (solo se indispensabile)

Come estrema ratio puoi rimuovere il cumulativo di marzo o ripristinare snapshot VM. Ricorda: operazione sconsigliata a lungo termine perché reintroduce vulnerabilità corrette.

# Elenco pacchetti installati
dism /online /get-packages /format:table

Rimozione di uno specifico pacchetto

dism /online /remove-package /packagename\:Package\for\RollupFix~\ /norestart

In breve

Il blocco della stampa RDP su Server 2019 nasce da una MXDWDRV.DLL corrotta introdotta con KB5035849. Finché tutte le macchine non applicano correttamente i cumulativi post‑luglio 2024 (e non mantengono nel driver store la DLL ridotta), la via più rapida e affidabile resta ripristinare la DLL funzionante o aggiornare + pulire il driver store. Per evitare regressioni, automatizza i controlli post‑patching e valuta una migrazione graduale a Server 2022/2025.


Riferimenti comunitari: [1] discussioni tecniche sul reindirizzamento stampanti RDP; [2] analisi di casi concreti su Server 2019 dopo il cumulativo di marzo; [3] note su aggiornamenti OOB di maggio 2024; [4] guide pratiche con esiti dei test su driver store e cumulativi. Le voci tra parentesi quadre nel testo rimandano a questi riferimenti.

Indice