前言:為什麼遠端列印總是「印不出、印錯、印慢」?
遠端桌面列印涉及 用戶端驅動 → 伺服器端驅動 → 列印佇列重導向 → 列印處理器 → 語言轉換 (EMF/RAW/XPS) 多環節。任何一環不匹配 (驅動版本、架構 x86/x64、列印處理器、權限) 都會導致失敗。本文系統梳理 自動重導向、手動重導向、Easy Print (Vista+)、驅動隔離、常見錯誤代碼與排查流程,助你建立「一次設定、隨處列印」的穩定環境。
核心架構:兩種重導向模式
模式一:自動列印機重導向 (預設、最常用)
- 前提: 用戶端印表機驅動 已在伺服器端安裝 (同名稱、同版本、同架構)
- 流程: 使用者登入 RDP 會話 → 終端機服務偵測用戶端印表機 → 伺服器建立對應列印佇列 (命名格式:
印表機名稱 (從 用戶端名稱)) → 使用伺服器端驅動處理列印作業 → 透過 RDP 虛擬通道 (Static Virtual Channel: RDPDR) 將 EMF/RAW/XPS 資料流傳回用戶端 → 用戶端列印子系統輸出
- 優點: 零設定、支援雙面、紙盤、解析度等進階屬性
- 缺點: 驅動版本不符時靜默失敗 (事件日誌記錄 Event ID 1111/3101)
模式二:手動列印機重導向 (LPT/COM 埠專用、USB 不支援)
- 適用: 用戶端印表機驅動 未在伺服器端安裝、或為舊式 LPT/COM 介面印表機
- 步驟: 管理員在伺服器端手動建立 本機印表機 → 連接埠選
LPT1:~LPT3: 或 COM1:~COM4: → 啟用「列印機共用」 → 用戶端 RDP 連線選項 → 「本地資源」→「印表機」勾選 → 連線後伺服器自動對應用戶端 LPT/COM 埠
- 限制: 不支援 USB 印表機 (無 LPT/COM 對應)、需管理員介入、無法使用進階列印功能
Easy Print (Vista/Server 2008/Win7/10/11) — 免驅動重導向革命
原理
- 用戶端印表機驅動 無需安裝於伺服器端
- 伺服器端使用 Microsoft Easy Print Driver (MsxpsDrv) 將列印作業轉為 XPS (XML Paper Specification) 格式
- 透過 RDP 虛擬通道傳送 XPS 至用戶端 → 用戶端 本地驅動 渲染輸出
- 需求: 用戶端 OS ≥ Vista、伺服器端 OS ≥ Server 2008、RDP 協定 ≥ 6.1、用戶端安裝 .NET Framework 3.0+ (含 XPS Viewer/列印子系統)
啟用與驗證
- 伺服器端群組原則:
gpedit.msc → 電腦設定 → 管理範本 → Windows 元件 → 遠端桌面服務 → 遠端桌面工作階段主機 → 列印機重導向 → 使用遠端桌面 Easy Print 列印機優先 → 啟用
- 用戶端 RDP 檔 (
.rdp) 確認含:
redirectprinters:i:1
redirectsmartcards:i:1 (非必要)
autoreconnect:i:1
- 驗證:連線後裝置管理員 → 列印佇列 → 應見
印表機名稱 (從 用戶端名稱),驅動顯示 Microsoft Easy Print
驅動安裝與版本對齊最佳實踐
1. 統一驅動來源
- 建立 印表機驅動庫 (共享資料夾/SCCM/Intune),所有終端機伺服器與用戶端從同一來源安裝
- 命名規範:
廠商_型號_版本_架構 (如 HP_LaserJet_M404_2023.10_x64)
2. 架構匹配 (x86/x64 陷阱)
| 伺服器端 | 用戶端 | 結果 |
| x64 驅動 | x64 驅動 | ✅ 自動重導向成功 |
| x64 驅動 | x86 驅動 | ❌ 失敗 (架構不符) |
| x86 驅動 (WoW64) | x86 驅動 | ✅ 成功 (但伺服器端 32 位驅動在 64 位 OS 受限) |
建議: 全環境統一 x64 驅動,淘汰 32 位用戶端/伺服器。
3. 列印處理器對齊
- 驅動屬性 → 進階 → 列印處理器:常見
winprint (RAW/EMF)、hppcl5ms、pxlmon (XPS)
- 伺服器端與用戶端 列印處理器名稱必須完全一致,否則列印作業卡在佇列 (狀態「錯誤 - 列印處理器不存在」)
常見錯誤代碼與排查流程
| 現象/錯誤 | 可能原因 | 排查步驟 |
| 列印機不出現在會話中 | 用戶端 RDP 設定未勾選印表機 / 群組原則禁用重導向 | 檢查 .rdp / gpedit.msc → 列印機重導向 → 允許 |
| Event ID 1111: 列印機驅動程式未安裝 | 伺服器端缺少對應驅動 | 安裝同版本驅動 / 啟用 Easy Print |
| Event ID 3101: 列印處理器不存在 | 列印處理器名稱不符 | 對齊驅動屬性 → 進階 → 列印處理器 |
| 列印作業卡在「正在列印」無輸出 | RDP 虛擬通道阻塞 / 用戶端列印子系統掛起 | 重啟用戶端 Print Spooler / 重新連線 / 檢查防火牆/防毒攔截 RDPDR 通道 |
| 亂碼/版面錯位 | 字型缺失 / EMF 轉換錯誤 / 驅動版本差異 | 伺服器端安裝缺失字型 / 改用 XPS/Easy Print / 更新驅動 |
| 雙面列印/紙盤選擇不生效 | 驅動不支援該屬性 / Easy Print 限制 | 確認驅動支援 / 嘗試原生驅動重導向 |
進階:列印機隔離與安全強化
- 列印機隔離 (Server 2012+): 每個會話獨立
spoolsv.exe 進程,防止單一惡意列印作業癱瘓全系統列印服務。
啟用:gpedit.msc → 電腦設定 → 管理範本 → 列印機 → 執行列印機驅動程式隔離 → 啟用
- 限制重導向印表機數量: 避免用戶端掛載大量印表機佔用伺服器資源。
註冊表:HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\MaxPrinterRedirections (DWORD, 預設 0=無限制,建議 10~20)
- 審計列印作業: 啟用「列印服務」操作日誌 (Event Viewer → Applications and Services Logs → Microsoft → Windows → PrintService → Operational),記錄列印者、文件、頁數、時間
結語:標準化是穩定的前提
遠端桌面列印穩定性 = 驅動標準化 (同名/同版/同架構) + 架構統一 (x64) + Easy Print 啟用 (免驅動備援) + 列印處理器對齊 + 群組原則鎖定。將印表機驅動納入 基礎設施即代碼 (IaC)、黃金映像、合規性基線,每季驗證一次「全環境列印測試」,讓「遠端列印印不出」成為歷史術語。