在 Windows 伺服器上安裝 Service Pack、更新匯總或印表機 Hotfix 之後,用戶無法列印

本文提供協助來解決在伺服器上安裝 Service Pack 或印表機 Hotfix 之後無法列印的問題。

適用:Windows Server 2012 R2
原始 KB 編號: 832219

徵狀

在 Windows Server 上安裝 Service Pack、更新匯總或更新 Unidrvui.dll 檔案的 Hotfix 之後,使用者可能會遇到下列兩種徵兆:

  • 當用戶端或伺服器嘗試列印時,列印後台處理程式服務會停止回應 (或「停止回應」) ,並出現下列錯誤訊息:

    無法建立列印作業。

  • 當您嘗試從伺服器主控台列印測試頁面時,您會收到下列錯誤訊息:

    無法列印測試頁面。

  • 當您嘗試使用裝置和印表機安裝驅動程式,或使用印表管理控制台安裝驅動程式時,[新增驅動程式] 或 [新增印表機精靈] 會停止回應。

原因

如果您在具有許多 Unidrv 型印表機控制語言 (PCL) 印表機驅動程式的伺服器上安裝 Service Pack 或 Hotfix 套件,可能會發生此行為。

當您在具有許多 Unidrv 型 PCL 印表機驅動程式的伺服器上安裝更新 Unidrvui.dll 的 Service Pack 或 Hotfix 檔案時,伺服器可能會花費很長的時間 (最多 2 小時,) 重新產生剖析的二進位列印機描述檔案, (.開頭檔案) ,用來提高這些驅動程式的多任務緩衝處理程式效率。 在此期間,列印後台處理程式無法接收傳入的列印作業,而且可能會將訊息傳回給表示列印佇列已滿的用戶端。 這是一次性的剖析作業,且在成功重新產生剖析的二進位 .複本檔案之後不會發生。

必須重新產生從一般印表機描述 (GPD) 檔案產生的二進位 .開頭檔案,因為 GPD 剖析器檔案版本已變更。 剖析所有以 Unidrv 為基礎的 PCL 驅動程式之後,多任務緩衝處理程式可以再次接收列印作業。 因此,Microsoft 建議您在具有許多 Unidrv 型 PCL 印表機驅動程式的伺服器上排程 Service Pack 和 Hotfix 安裝,以容納最多 2 小時的 .bug 檔案編譯。

解決方案

若要解決此問題,請排程足夠的時間讓伺服器完成每個升級驅動程式檔案之所有 Unidrv 型印表機驅動程式的剖析,然後為使用這些檔案的每個印表機排程足夠的時間。

因應措施

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需進一步了解如何備份及還原登錄的相關資訊,請參閱如何在 Windows 中備份及還原登錄

如果您無法等候伺服器完成所有 Unidrv 型印表機驅動程式的剖析,請手動移除所有快取的二進位印表機描述檔案 (.開頭檔案) ,然後讓它們自動重新建立。 視伺服器的速度而定,此自動重新建立可能會在較短的時間內完成。 此作業通常會在 30 分鐘內完成。

注意事項

當列印後台處理程序啟動時,它會安裝較新版本的 Unidrv.dll。 因此,.bud 檔案已過期。 .bud 檔案是 .ppd 檔案的編譯版本,可以從這些 .ppd 檔案完全重新產生。 因此,您可以移除 .開頭檔案。

如果要執行這項操作,請依照下列步驟執行:

  1. 停止列印後台處理程序服務。 若要這樣做,請從命令提示字元執行下列命令:

    net stop spooler
    
  2. 搜尋所有 .bud 檔案,然後確定這些檔案已加上目前時間和日期的戳記。 檔案會以今天的日期顯示。

  3. 拿掉所有日期和時間戳在今天日期之前的 .開頭檔案。 這些檔案位於下列資料夾中:

    %SYSTEMROOT%\System32\Spool\Drivers\w32x86\3

  4. 如果登錄機碼存在,請移除下列登錄機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    如果要執行這項操作,請依照下列步驟執行:

    1. 依序按一下 [開始] 及 [執行],並在 [開啟] 方塊中鍵入 regedit 後,再按一下 [確定]

    2. 找出 ,然後按下列登錄子機碼:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

    3. [登錄] 功能表上,按一下 [匯出登錄檔案]

    4. 在 [ 檔名] 方塊中,輸入 printkey,然後按兩下 [ 儲存]

      注意事項

      如果您稍後必須還原 印登錄 機碼,您可以按兩下您儲存的Printkey.reg檔案來執行此動作。

    5. 找出 ,然後按下列登錄子機碼是否存在:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    6. 在 [ 編輯] 功能表上,單擊 [ 刪除],然後按下 [ ] 確認移除 PostSPUpgrade 登錄機碼。

      注意事項

      在您重新啟動計算機之後, PostSPUpgrade 登錄機碼可能會重新出現。 如果存在其他尚未剖析的 .bud 檔案,就會發生此行為。 剖析這些檔案之後,系統會自動移除此登錄機碼。

  5. 重新啟動伺服器。

重新啟動伺服器之後,大約 30 分鐘後,使用者就可以使用列印功能。

其他相關資訊

在 .NET Framework 3.0 中,unidrv.dll 檔案現在隨附於 XPS 列印中。 unidrv.dll 檔案也可以觸發此行為。