從 ASP 呼叫 COM 物件時無法列印

本文可協助您解決 COM 物件從 Active Server Pages 呼叫時,將輸出傳送至印表機失敗的問題。

原始產品版本: 使用中伺服器頁面
原始 KB 編號: 184291

徵狀

從 Active Server Pages 呼叫時,將輸出傳送至印表機的 COM 物件會失敗 (ASP) 但從互動式應用程式呼叫時運作正常。 此 COM 物件可以是商業產品,例如 Microsoft Office 應用程式或自定義的第三方物件。 常見的錯誤訊息是「ClassName 錯誤 』800a01e2' 印表機錯誤」。

原因

大部分物件用來列印的標準 API 取決於位於 HKEY_CURRENT_USER 中的登錄專案。 此登錄區是動態的。 視進程執行所在的用戶內容而定,會將不同的資訊載入此登錄區。 ASP 頁面會在以 SYSTEM 帳戶執行的 IIS 下執行。 當您在 ASP 程式代碼中建立 COM 物件的實例時,根據預設,它也會以 SYSTEM 帳戶執行。 根據預設,SYSTEM 帳戶在登錄中未設定任何印表機。

解決方案

您可以設定 SYSTEM 帳戶的印表機來解決此問題。 若要設定 SYSTEM 帳戶的印表機,請執行下列步驟:

警告

此方法需要您使用登錄 編輯器 來修改登錄。 不正確地使用登錄 編輯器 可能會造成嚴重的全系統問題,而您可能需要重新安裝 Windows 來更正這些問題。 Microsoft 無法保證可以解決使用登錄 編輯器 所產生的任何問題。 請自行承擔此工具的風險。

  1. 請確定您目前登入伺服器的使用者已安裝所需的印表機。

  2. 啟動登錄 編輯器 (Regedit.exe) 。

  3. 選取下列金鑰:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

  4. 從 [ 登錄] 功能表中,選取 [ 導出登錄檔]

  5. 在 [ 檔名] 文本框中,輸入 c:\Devices.reg

  6. 選取下列金鑰:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts

  7. 從 [ 登錄] 功能表中,選取 [ 導出登錄檔]

  8. 在 [ 檔名] 文本框中,輸入 c:\PrinterPorts.reg

  9. 選取下列金鑰:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows

  10. 從 [ 登錄] 功能表中,選取 [ 導出登錄檔]

  11. 在 [ 檔名] 文本框中,輸入 c:\Windows.reg

  12. 從 [ 開始] 按鈕中,選取 [ 執行]。 在 [ 執行] 對話框中輸入記事本Devices.reg, 以在記 事本中開啟Devices.reg。

  13. 將文字 HKEY_CURRENT_USER 取代為 HKEY_USERS\.DEFAULT

  14. 儲存檔案。 然後按兩下 Windows 檔案總管中的 檔案,將其匯入登錄。

  15. 針對PrinterPorts.reg和Windows.reg重複步驟 13 到 15。

注意事項

這些步驟僅適用於本機印表機。

若要讓 IIS 使用 SYSTEM 帳戶來列舉網路印表機,請遵循下列步驟。

注意事項

如果進程是在網路服務帳戶下執行,則需要新建立之登錄的明確許可權。

  1. 請確定您目前以已安裝所需的網路印表機的使用者身分登入伺服器。

  2. 啟動 [登錄編輯程式]。

  3. 選取下列金鑰:

    HKEY_CURRENT_USER\Printers\Connections

  4. 在 [ 登錄] 功能表上,選取 [ 導出登錄檔]

  5. 在 [ 檔名] 方塊中,輸入 c:\printconns.reg

  6. 若要在記事本中開啟 printconns.reg 檔案,請選取 [ 開始],選取 [ 執行],在 [ 啟] 方塊中輸入 [記事本printconns.reg],然後選取 [ 確定]

  7. 將文字 HKEY_CURRENT_USER 取代為文字 HKEY_USERS\.DEFAULT

  8. 儲存檔案。

  9. 若要將檔案匯入登錄,請按兩下 Windows 檔案總管中的檔案。

  10. 重新啟動列印後台處理程序服務。