クライアントが ASP の場合に、Visual Basic IDE 環境で COM+ コンポーネントをデバッグするとエラーが発生する

文書翻訳 文書翻訳
文書番号: 259725 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

Microsoft Windows 2000 ベースのコンピュータ上で、Visual Basic 6.0 を使用して、Microsoft COM+ 1.0 コンポーネントをデバッグすると、クライアントが ASP (Active Server Pages) ページの場合、ブラウザに次のエラー メッセージが表示されることがあります。
Server オブジェクト, ASP 0178 (0x800A0005) 許可を確認中に Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
Microsoft Windows XP ベースのコンピュータ上で、Visual Basic 6.0 を使用して、Microsoft COM+ 1.5 コンポーネントをデバッグすると、クライアントが ASP (Active Server Pages) ページの場合、ブラウザに次のエラー メッセージが表示されることがあります。
Server オブジェクト, ASP 0178 (0x800A0005) 許可を確認中に Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。
この現象は、Visual Basic の統合開発環境 (IDE) 内部から COM+ コンポーネントを実行した場合にのみ発生します。COM+ アプリケーション内で、コンパイルされた状態の COM+ コンポーネントを実行した場合は、このエラーは発生しません。

原因

認証ユーザー (匿名アクセスを使用している場合は、通常、IUSR_<machinename> アカウント) には、DCOM サーバー (この場合は VB6.exe) にアクセスするための適切なアクセス許可がありません。Visual Basic IDE で COM+ コンポーネントをデバッグする場合、起動したユーザーは対話ユーザー、DCOM サーバーにアクセスするユーザーは認証ユーザーです。

VB6.exe の DCOM エントリは存在しないため、DCOM ではデフォルトのアクセス許可が使用されます。Windows 2000 および Windows XP では、DCOM のデフォルトのアクセス許可は、デフォルトでは System アカウントと起動ユーザーにのみ付与されます。起動ユーザーと、DCOM サーバーにアクセスするユーザーは同じではないため、「現象」に記載されているエラー メッセージが表示されます。

解決方法

以下の 2 つの回避策があります。

回避策 1

VB6.exe 用の DCOM エントリをレジストリに追加します。これにより、Visual Basic で COM+ コンポーネントをデバッグするための DCOM のアクセス許可を設定できます。
  1. 以下の手順を実行して、DCOM に VB ASP Debugging エントリを作成します。
    1. メモ帳などのテキスト エディタを起動して、次の構文を入力します (大文字と小文字は区別されます)。
      REGEDIT4
      [HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}]
      @="VB ASP Debugging"
      [HKEY_CLASSES_ROOT\CLSID\{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}\LocalServer32]
      @="vb6.exe"
      [HKEY_CLASSES_ROOT\AppID\vb6.exe]
      "AppId"="{70F214BA-94E2-4bdf-8F30-32CB4A905E4D}"
    2. ファイルを Vbaspdbg.reg という名前で保存します。
    3. Vbaspdbg.reg ファイルを保存したフォルダを見つけて、Vbaspdbg.reg ファイルをダブルクリックします。これにより、Windows レジストリに自動的に登録されます。
  2. Visual Basic の ASP デバッグを行うための DCOM のアクセス許可に、Everyone アカウントを追加します。

    Windows 2000
    1. DCOMCNFG を起動します。[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、ダイアログ ボックスに dcomcnfg と入力します。
    2. [分散 COM の構成のプロパティ] ページで、[アプリケーション] タブをクリックし、一覧の [VB ASP Debugging] をクリックし、[プロパティ] をクリックします。
    3. [VB ASP Debugging のプロパティ] プロパティ シートで、[セキュリティ] タブをクリックし、[独自のアクセス許可を使う] をクリックして、[編集] をクリックします。
    4. [レジストリ値のアクセス許可] ウィンドウで、[追加] をクリックし、Everyone アカウントを [アクセスの許可] に追加します。
    5. [OK] をクリックし、[適用] をクリックして変更を適用し、[OK] をクリックし、[分散 COM の構成のプロパティ] ページを閉じます。
    6. コンピュータを再起動し、変更内容を有効にします。
    Windows XP

    1. COM+ エクスプローラを起動します。[スタート] ボタンをクリックし、[管理ツール] をクリックし、[コンポーネント サービス] をクリックします。
    2. [コンポーネント サービス]、[コンピュータ]、[マイ コンピュータ]、[DCOM の構成] の順に展開します。
    3. [VB ASP Debugging] を右クリックし、[プロパティ] をクリックします。
    4. [セキュリティ] タブで、[アクセス許可] の下の [カスタマイズ] をクリックし、[編集] をクリックします。
    5. [アクセス許可] ウィンドウで、[追加] をクリックし、Everyone アカウントを追加し、Everyone のアクセス許可をオンにします。
    6. [OK] をクリックし、[適用] をクリックして変更を適用し、[OK] をクリックし、[VB ASP Debugging のプロパティ] ページを閉じます。
    7. コンピュータを再起動し、変更内容を有効にします。

回避策 2

  1. デバッグを行うには、ASP ページがある仮想ディレクトリの [アプリケーション保護] を、[高 (分離プロセス)] に構成します。これにより、ASP ページが個別のプロセスで実行され、Web サイトの他の箇所に影響を与えることなくセキュリティを変更できるようになります。
    1. インターネット インフォメーション サービス (IIS) マネージャを起動します。
    2. ASP ページが格納されている仮想ディレクトリを右クリックし、[プロパティ] をクリックします。
    3. [仮想ディレクトリ] タブをクリックし、[アプリケーション保護] ボックスの一覧の [高 (分離プロセス)] をクリックします。
    4. [適用] をクリックします。
  2. 以下の手順を実行して、仮想ディレクトリの [匿名アクセス] を無効にし、[統合 Windows 認証] または [基本認証] が選択されていることを確認します。
    1. 仮想ディレクトリのプロパティ ダイアログ ボックスの [ディレクトリ セキュリティ] タブをクリックします。
    2. [匿名アクセスおよび認証コントロール] の下の [編集] をクリックします。
    3. [匿名アクセス] チェック ボックスがオフになっていることを確認します。
    4. [統合 Windows 認証] チェック ボックスまたは [基本認証] チェック ボックスをオンにします。
  3. 統合 Windows 認証を使用する場合は、クライアント ブラウザを実行して、Visual Basic の IDE のデバッグ セッションと同じユーザー アカウントで ASP ページにアクセスします。基本認証を使用する場合は、Visual Basic IDE のデバッグ セッションを実行しているユーザー アカウントのユーザー名とパスワードを入力します。

    : 2 番目の回避策は、COM のデフォルトのアクセス許可が変更されていないことを前提としています。デフォルトのアクセス許可が変更されていない場合は、System アカウントとサーバー ID にアクセス許可を付与するアクセス制御リスト (ACL) が、COM によって構築されます。この状況では、サーバー ID は、Visual Basic の IDE のデバッグ セッションを実行中のログインしているユーザーです。DCOM のデフォルトのアクセス許可に変更を加えている場合、2 番目の回避策を使用するには、Visual Basic の IDE のデバッグ セッションを実行しているユーザー アカウントをデフォルトのアクセス許可に追加する必要があります。これを行うには、DCOMCNFG を使用します。COM セキュリティの詳細については、「関連情報」に記載されているリンクを参照してください。

状況

この動作は仕様です。

詳細

この現象は、Microsoft Windows NT 4.0 および IIS 4.0 では発生しません。 Windows NT 4.0 ベースのコンピュータで発生する ASP 0178 エラーの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
198432 [PRB] COM オブジェクトをインスタンス化する際にサーバー オブジェクト エラー 'ASP 0178' が発生する
COM セキュリティの関連情報については、以下の Microsoft Developer Network (MSDN) Web サイトを参照してください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/6f1f6925-a6ab-4cfa-b0b4-b4b4012979f2.asp

プロパティ

文書番号: 259725 - 最終更新日: 2005年10月19日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Active Server Pages 4.0?を以下の環境でお使いの場合
    • Microsoft Windows 2000 Standard Edition
    • Microsoft Windows XP Professional
  • Microsoft Visual Basic 6.0 Enterprise Edition
キーワード:?
kbbug kbdebug kbprb kbvbp600 kbcomplus KB259725
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com