BUG: Client Installation EXE can Corrupt the Registry

ID: Q184398


The information in this article applies to:
  • Microsoft Transaction Server, versions 1.0, 2.0
    on the following platforms: Alpha, NT, Win95


SYMPTOMS

If one of your Microsoft Transaction Server (MTS) components does not register a ProgID, then the MTS package export feature generates a bad client installation EXE. Any client installation EXE file generated for that component deletes large portions of the registry when it is run. After running such a client installation EXE you must reinstall the operating system.


CAUSE

The MTS client installation EXE expects the components to register a ProgID.


RESOLUTION

The two workarounds for this behavior are:

  • Make sure that all components in your MTS packages register a ProgID.

    -or-


  • Do not use client installation executables to configure clients of those components.


You also need to consider the following:

  • Visual Basic (VB) components always register ProgID's.


  • Microsoft Foundation Class (MFC) components register ProgID's by default. If, however, you change the code around enough, you can cause them to stop registering ProgID's.


  • The Active Template Library (ATL) object wizard creates components that generate ProgID's. Again, if you change the code around you can cause these objects to stop registering ProgID's.


Conversely, many technologies require you to add code by hand to your component to register its ProgID. This code should be added to the implementation of the DllRegisterServer API function. In particular, the following technologies do not automatically generate such code:

  • ATL, when generated without the aid of the ATL Object Wizard.


  • Visual J++


  • C or C++ components generated without the aid of ATL or MFC.



STATUS

Microsoft has confirmed this to be a bug in Microsoft Transaction Server.


MORE INFORMATION

Steps to Reproduce Behavior

WARNING: REPRODUCTION OF THIS BUG REQUIRES A REGISTRY RESTORATION OR COMPLETE SYSTEM RE-INSTALLATION.

Create a component without a ProgID. Install or import the component into an MTS package. Now export the package. This produces a .pak file (the server-side deployable form of the package) in the directory you specified, as well as an EXE file in the clients directory under that directory. This EXE file is the client-side remote application setup program, and it installs the necessary components for a client to talk to a server.

Now that you have produced the faulty client installation executable, run the EXE. The result is that the HKEY_CLASSES_ROOT tree in the registry will be deleted. This in turn causes every application using COM to stop functioning.

Additional query words: Corrupt Registry, No CLSID

Keywords : kbMTS kbGrpCom kbBug TSrvDeploy TSrvPackages
Version : winnt:1.0,2.0
Platform : winnt
Issue type : kbbug


Last Reviewed: October 13, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.