Microsoft KB Archive/185193

= PRB: Clireg32 Fails to Register the Type Library of DCOM Server =

Article ID: 185193

Article Last Modified on 11/18/2003

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition

-



This article was previously published under Q185193



SYMPTOMS
When using Clireg32.exe to register the type library (.tlb file) of a DCOM server, the type library entries are not entered in the registry. This problem also occurs during the Internet download of usercontrols that reference DCOM servers. When this problem occurs, you will receive one of the following error messages while trying to run the DCOM client application:

The instruction at '0x00000000' referenced memory at '0x00000000'. The

memory could not be 'read'

-or-

An application error has occurred and an application error log is being

generated. '' Exception: access violation (0xc0000005),

address: 0x00000000



CAUSE
The Clireg32.exe utility fails to register the type library when the DCOM option is selected.



RESOLUTION
To resolve this issue, modify the DCOM Server .vbr file, and then use CliReg32.Exe to reregister the DCOM Server, first as a remote automation component, then as a DCOM component, as detailed below.

Step-By-Step Procedure
 Open the DCOM Server .vbr file in Notepad or any text editor. Both the ProxyStubClsid and ProxyStubClsid32 keys for the DCOM Server ClassId must modified. (In the sample below, the underscore character (_) is used as a line-continuation character; the line does not appear in this way in your .vbr file.)

Change the following

'''HKEY_CLASSES_ROOT\INTERFACE\{} _

\ProxyStubClsid\{00020420-0000-0000-c000-00000000046}'''

to the following:

'''HKEY_CLASSES_ROOT\INTERFACE\{} _

\ProxyStubClsid\{00020424-0000-0000-c000-00000000046}'''

Make the same change for ProxyStubClsid32. On the Windows Start menu, click Run, and type the following command:

CLIREG32 DCOMSERVER.VBR -T DCOMSERVER.TLB -S SERVERMACHINENAME

NOTE: In the above command, "DCOMSERVER" is the name of your DCOM server, and "SERVERMACHINENAME" is the name of the server where the DCOM component will reside. Choose Remote Automation from Remote Transport options. Now, run the command again:

CLIREG32 DCOMSERVER.VBR -T DCOMSERVER.TLB -S SERVERMACHINENAME

This time, choose Distributed COM from Remote Transport options.</ol>

<div class="moreinformation_section">

Steps to Reproduce Behavior
NOTE: This article assumes that you are familiar with creating and deploying DCOM client and server applications.

Create the DCOM Server
<ol> Create a new ActiveX EXE project in Visual Basic 5; Class1 is created by default.</li> Rename Class1 to "CDCOMServer".</li> On the Project menu, click Project Properties, and rename the project to DCOMServer.</li> Click the Component tab, and then click Remote Server Files.</li>  Add the following code to the CDCOMServer class module: Private mName As String

Public Property Let sName(str As String) mName = str End Property

Public Property Get sName As String sName = mName End Property

Private Sub Class_Initialize mName = "DCOM Server" End Sub </li> Create the ActiveX EXE.</li></ol>

Create the Client
<ol> Create a new ActiveX Control project in Visual Basic 5.0; UserControl1 is created by default.</li> Rename UserControl1 to "CtlDownload" (without the quotation marks).</li> Add a TextBox, a CommandButton, and a Label to the control.</li> On the Project menu, click References, and then click DCOMServer.</li>  Place the following code in the user control's code pane: Private Sub Command1_Click Dim svr As New DCOMServer.CDCOMServer svr.sName = Text1.Text Label1.Caption = svr.sName End Sub </li> [Optional] For testing, create a Standard EXE project to test the ActiveX control. Whenever you enter something in the TextBox and click Command1, the same text should be displayed on the Label.</li> Create the CtlDownload OCX.</li></ol>

Create Installation Programs for the Client and the Server
<ol> Use the Application Setup Wizard to create a setup program for DCOMServer project.</li> Create an Internet Component Download Setup for the client (CtlDownload). Be sure to add the DCOMServer.vbr file.

NOTE: To have a successful download, please refer to the following Microsoft Knowledge Base article:

168429 PRB: Component Download Fails for DCOM Projects

</li></ol>

Install the Server and Test the Client

 * 1) Install the DCOMServer on a Windows 2000 (Professional or Server) or Windows NT 4.0 (workstation or server) with Service Pack 3 installed.
 * 2) From a client computer, open the CtlDownLoad.htm file in the control's setup folder.
 * 3) Click the CommandButton on the control to reproduce one of the above-mentioned errors.

<div class="references_section">