ASP から呼び出された場合、COM オブジェクトの出力に失敗する

この記事は、COM オブジェクトが Active Server Pages から呼び出されたときにプリンターに出力が失敗するという問題を解決するのに役立ちます。

元の製品バージョン: Active Server ページ
元の KB 番号: 184291

現象

出力をプリンターに送信する COM オブジェクトは、Active Server Pages (ASP) から呼び出されると失敗しますが、対話型アプリケーションから呼び出されると正しく機能します。 この COM オブジェクトは、Microsoft Office アプリケーションなどの商用製品またはカスタムサード パーティ オブジェクトのいずれかです。 一般的なエラー メッセージは、"ClassName エラー '800a01e2' プリンター エラーです。

原因

ほとんどのオブジェクトが印刷に使用する標準 API は、HKEY_CURRENT_USERにあるレジストリ エントリによって異なります。 このレジストリ ハイブは動的です。 プロセスが実行されているユーザー コンテキストに応じて、異なる情報がこの Hive に読み込まれます。 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_USERHKEY_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」と入力して、[ OK] を選択します

  7. テキストを テキスト HKEY_CURRENT_USERHKEY_USERS\.DEFAULT置き換えます。

  8. ファイルを保存します。

  9. レジストリにファイルをインポートするには、Windows エクスプローラーでファイルをダブルクリックします。

  10. 印刷スプーラー サービスを再起動します。