Microsoft KB Archive/303850

= FIX: CoGetClassObject May Not Activate Remote COM+ Component =

Article ID: 303850

Article Last Modified on 6/5/2003

-

APPLIES TO

 Microsoft COM+ 1.0, when used with:  Microsoft Windows 2000 Service Pack 1

 Microsoft Windows 2000 Service Pack 2 

-



This article was previously published under Q303850



SYMPTOMS
When you use a COM+ server application and a remote client, if a COM+ proxy is installed on client computer or if you call the CoCreateInstanceEx method in a client application, the activation occurs on a remote COM+ server. However, if you call the CoGetClassObject and CreateInstance functions, and the only server type library is registered on the client computer through Regsvr32.exe, the activation occurs locally on the client computer, regardless if you set the remote host name or the content of COSERVERINFO.

For example, you may encounter these symptoms when the client uses Visual Basic Scripting Edition (VBScript) with CreateObject(&quot;progID&quot;, remoteServerName), which internally uses CoGetClassObject and CreateInstance.

If the VBScript client must dynamically decide which COM+ server to use based on incoming traffic, only the server type library is registered on the client computer, and the activation does not occur on the COM+ server. If a COM+ proxy is registered on the client, the VBScript client loses the flexibility to choose the COM+ server.



CAUSE
The original class context is lost between the class factory wrapper on COM+ and the caller of CoGetClassObject. This bug does not affect the Microsoft Transaction Server (MTS) server or client or the legacy Distributed Component Object Model (DCOM) server or client.



RESOLUTION
To resolve this problem, obtain Microsoft COM+ Rollup Hotfix 15. For additional information, please see the following article in the Microsoft Knowledge Base:

306417 INFO: Availability of Windows 2000 Post-Service Pack 2 COM+ Hotfix Rollup Package 15

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack

<div class="workaround_section">

WORKAROUND
Use one of the following methods to work around this problem:  Export the proxy, and register the proxy on the client computer.</li>  Use CoCreateInstanceEx to replace CoGetClassObject and CreateInstance. For example: hr = CoCreateInstanceEx(__uuidof (CTest),NULL,   CLSCTX_REMOTE_SERVER, &cif, 1, &mq); pUnk= mq.pItf; </li></ul>

<div class="status_section">

STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 3.

<div class="moreinformation_section">

MORE INFORMATION
For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:

265173 The Datacenter Program and Windows 2000 Datacenter Server Product

For additional information about how to install multiple hotfixes with only one reboot, click the article number below to view the article in the Microsoft Knowledge Base:

296861 Use QChain.exe to Install Multiple Hotfixes with One Reboot

For additional information about how to install Windows 2000 and Windows 2000 hotfixes at the same time, click the article number below to view the article in the Microsoft Knowledge Base:

249149 Installing Microsoft Windows 2000 and Windows 2000 Hotfixes

Additional query words: kbIISCom kbWin2000preSP3COMRollup15Fix

Keywords: kbbug kbfix kbwin2000presp3fix kbwin2000sp3fix KB303850

-

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

© Microsoft Corporation. All rights reserved.