DCOM クライアントでオブジェクトを作成できない


重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリの復元方法を理解しておいてください。復元方法の詳細については、Regedit.exe のヘルプ トピック「レジストリを復元する」、または Regedt32.exe のヘルプ トピック「レジストリ キーを復元する」を参照してください。

現象


コンソール以外のターミナル サーバー セッション内部で実行されている DCOM (Distributed Component Object Model) クライアント プログラムで、ターミナル サーバー サービスとして実行されている DCOM サーバー内に実装されているクラスのオブジェクトを作成できません。


また、イベント ビューアで、DCOM から以下のようなイベント ID 10010 の発生が報告される場合があります。
サーバー <clsid> は、必要なタイムアウト期間内に DCOM に登録しませんでした。

原因


この現象は、これらのオブジェクトが DCOM およびターミナル サーバーによってユーザー グローバルと見なされるために発生します。


DCOM およびターミナル サーバーには、DCOM クラスをシステム グローバルとして登録する機能があります。サービス内に実装されているクラスの場合は、明示的にユーザー グローバルとして登録されていない限り、システム グローバルと見なす必要があります。

解決方法


警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。


レジストリの編集方法の詳細については、Regedit.exe のヘルプの「キーと値の変更」または「キーと値を変更する」を参照してください。または Regedt32.exe のヘルプの「レジストリ情報の追加と削除」または「レジストリの情報を追加または削除する」、および「レジストリ情報の編集」または「レジストリ情報を編集する」を参照してください。レジストリの編集を行う前に、必ずレジストリのバックアップをとってください。Windows NT または Windows 2000 を実行している場合、システム修復ディスク (ERD) も更新する必要があります。


DCOM クラスを明示的にシステム グローバルとして登録するには、以下の手順を使用します。
  1. 以下のレジストリ キーが存在しなければ、作成します。
    HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\CLSID
  2. {CLSID} という名前を持つサブキーを作成します。CLSID は、システム グローバルにすべき DCOM クラスのクラス ID です。たとえば、次のような名前のサブキーを作成します。
    {41116C00-8B90-101B-96CD-00AA003B14FC}
  3. 上記のサブキーの下に、fSystemGlobalClass という名前の REG_DWORD 型の値を作成し、値のデータを 1 に設定します。
または、ターミナル サービスがインストールされた Microsoft Windows 2000 Server にアップグレードすると、同様の制限事項はありません。

状況


マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。

詳細


この問題を再現するには、ActiveX Template Library (ATL) で提供されている "ATLDRAW" という名前の DCOM サンプルを使用します。

関連情報


この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 187146 (最終更新日 2001-08-10) をもとに作成したものです。