從 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 無法保證可以解決使用登錄 編輯器 所產生的任何問題。 請自行承擔此工具的風險。
請確定您目前登入伺服器的使用者已安裝所需的印表機。
啟動登錄 編輯器 (Regedit.exe) 。
選取下列金鑰:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
從 [ 登錄] 功能表中,選取 [ 導出登錄檔]。
在 [ 檔名] 文本框中,輸入 c:\Devices.reg。
選取下列金鑰:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
從 [ 登錄] 功能表中,選取 [ 導出登錄檔]。
在 [ 檔名] 文本框中,輸入 c:\PrinterPorts.reg。
選取下列金鑰:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
從 [ 登錄] 功能表中,選取 [ 導出登錄檔]。
在 [ 檔名] 文本框中,輸入 c:\Windows.reg。
從 [ 開始] 按鈕中,選取 [ 執行]。 在 [ 執行] 對話框中輸入記事本Devices.reg, 以在記 事本中開啟Devices.reg。
將文字
HKEY_CURRENT_USER
取代為HKEY_USERS\.DEFAULT
。儲存檔案。 然後按兩下 Windows 檔案總管中的 檔案,將其匯入登錄。
針對PrinterPorts.reg和Windows.reg重複步驟 13 到 15。
注意事項
這些步驟僅適用於本機印表機。
若要讓 IIS 使用 SYSTEM 帳戶來列舉網路印表機,請遵循下列步驟。
注意事項
如果進程是在網路服務帳戶下執行,則需要新建立之登錄的明確許可權。
請確定您目前以已安裝所需的網路印表機的使用者身分登入伺服器。
啟動 [登錄編輯程式]。
選取下列金鑰:
HKEY_CURRENT_USER\Printers\Connections
在 [ 登錄] 功能表上,選取 [ 導出登錄檔]。
在 [ 檔名] 方塊中,輸入 c:\printconns.reg。
若要在記事本中開啟 printconns.reg 檔案,請選取 [ 開始],選取 [ 執行],在 [ 開 啟] 方塊中輸入 [記事本printconns.reg],然後選取 [ 確定]。
將文字
HKEY_CURRENT_USER
取代為文字HKEY_USERS\.DEFAULT
。儲存檔案。
若要將檔案匯入登錄,請按兩下 Windows 檔案總管中的檔案。
重新啟動列印後台處理程序服務。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應