現在オフラインです。再接続するためにインターネットの接続を待っています

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

現象
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 サイトを参照してください。
プロパティ

文書番号:259725 - 最終更新日: 10/19/2005 08:22:00 - リビジョン: 4.1

Microsoft Active Server Pages 4.0, Microsoft Visual Basic 6.0 Enterprise Edition

  • kbbug kbdebug kbprb kbvbp600 kbcomplus KB259725
フィードバック
ody>