Microsoft KB Archive/187146

= DCOM Clients Cannot Create Objects =

Article ID: 187146

Article Last Modified on 11/1/2006

-

APPLIES TO


 * Microsoft Windows NT Server 4.0, Terminal Server Edition

-



This article was previously published under Q187146



IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry



SYMPTOMS
Distributed Component Object Model (DCOM) client programs that run inside Terminal Server sessions other than the console cannot create objects of classes implemented inside DCOM servers running as Terminal Server services.

You may also receive occurrences of event ID 10010 from DCOM in the Event Viewer with the following description:

The server did not register with DCOM within the required timeout.

-or-

You may also receive the following error message:

CoGetClassObject failed - Server Execution failed CO_E_SERVER_EXEC_FAILURE 0x80080005



CAUSE
This behavior is because those object classes are considered as user globals by DCOM and Terminal Server.

However, DCOM and Terminal Server provide the ability to register DCOM classes as system globals. But, in the case of classes implemented in services, they should be considered as system globals, unless they had been explicitly registered as user globals.



RESOLUTION
WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

To explicitly register a DCOM class as a system global, use the following steps:  If it does not exist, create the following registry key:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\Compatibility\CLSID

 Create a subkey with {CLSID} as its name, where the CLSID is the class identifier of the DCOM class that is to be a system global. For example, a subkey would be:

{41116C00-8B90-101B-96CD-00AA003B14FC}

 Under the above subkey, create fSystemGlobalClass as the value name with a REG_DWORD type and set its value data to 1.

Or, you can upgrade to Microsoft Windows 2000 Server with Terminal Services, which does not have the same restriction.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.



MORE INFORMATION
To reproduce this, use the DCOM sample named "ATLDRAW" provided with the ActiveX Template Library (ATL).

Keywords: kbpending kbprb KB187146

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.