Los clientes DCOM no pueden crear objetos


Síntomas


Distribuir programas de cliente de modelo de objetos componentes (DCOM) que se ejecutan dentro de sesiones de Terminal Server que la consola no puede crear objetos de clases implementados dentro de servidores DCOM que se ejecutan como servicios de Terminal Server.


También puede recibir las apariciones de Id. de suceso 10010 de DCOM en el Visor de sucesos con la siguiente descripción:
El servidor < clsid > no se registró con DCOM dentro del tiempo de espera requerido.
- o -
También puede recibir el siguiente mensaje de error:
Error de ejecución del servidor de CoGetClassObject fallado - CO_E_SERVER_EXEC_FAILURE 0 x 80080005

Causa


Este comportamiento es debido a que dichas clases se consideran como variables globales de usuario mediante DCOM y Terminal Server.


Sin embargo, DCOM y Terminal Server proporcionan la capacidad de registrar clases DCOM como globales del sistema. Sin embargo, en el caso de las clases implementadas en servicios, que deberían considerarse como globales del sistema, a menos que ya se había sido explícitamente registrado como usuario globals.

Solución


Importante: esta sección, el método o la tarea contiene pasos que indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por lo tanto, asegúrese de que sigue estos pasos cuidadosamente. Para una mayor protección, haga una copia de seguridad del registro antes de modificarlo. Entonces, puede restaurar el registro si se produce un problema. Para obtener más información acerca de cómo hacer copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 cómo hacer copia de seguridad y restaurar el registro en Windows

Para registrar explícitamente una clase DCOM como un sistema global, siga estos pasos:

  1. Si no existe, cree la siguiente clave del registro:
    HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\CLSID
  2. Cree una subclave con {CLSID} como su nombre, donde el CLSID es el identificador de clase de la clase DCOM que va a ser un sistema global. Por ejemplo, sería una subclave:
    {41116C00-8B90-101B-96CD-00AA003B14FC}
  3. Bajo la subclave anterior, cree fSystemGlobalClass como nombre de valor con un tipo REG_DWORD y establezca su valor en 1.
O bien, puede actualizar a Microsoft Windows 2000 Server con servicios de Terminal Server, que no tiene la misma restricción.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información


Para reproducir este problema, utilice el ejemplo DCOM denominado "ATLDRAW" proporcionado con ActiveX Template Library (ATL).