Article: Q234769
Product(s): Microsoft C Compiler
Version(s): WINDOWS:3.0,6.0
Operating System(s):
Keyword(s): kbRegistry kbOSWinCEsearch kbATL300bug kbDSupport kbGrpDSMFCATL
Last Modified: 26-JUN-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Windows CE Toolkit for Visual C++ 6.0
- The Microsoft Active Template Library (ATL) 3.0
-------------------------------------------------------------------------------
SYMPTOMS
========
If you run "REGSVRCE.exe /U" on an ATL DLL to unregister components or controls
will not clean up the registry. The ProgID and entries under the CLSID will not
be removed.
CAUSE
=====
During unregistration, ATL checks to see if a key has subkeys or values before
deleting it. ATL checks for values by calling CRegParser::HasValues(). Inside
this function, RegEnumValue() is called. Under Win32, RegEnumValue() returns
NULL if the key only has a default value. Under CE, it returns the string
"Default". This causes CRegParser::HasValues() to return TRUE and prevents ATL
from deleting the key.
RESOLUTION
==========
In the function CRegParser::HasValues() in STATREG.h, the following line needs
to be changed from:
if (ERROR_SUCCESS == lResult && (szValueName[0] != NULL))
to:
if (ERROR_SUCCESS == lResult && (szValueName[0] != NULL) && lstrcmpi(szValueName, _T("Default")))
You will need to statically link with the registration code by building for
ReleaseMinDependency. To build a debug version, you'll need to add
_ATL_STATIC_REGISTRY to the preprocessor symbols (under Project menu select
Settings in the C++ tab). Make sure to select Rebuild All.
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article.
MORE INFORMATION
================
Make sure you're modifying the right version of STATREG.h. It should be the one
in the "Windows CE Tools" directory (for example, "\Windows CE Tools\WCE200\MS
HPC\atl\include").
Additional query words: regsvrce unregister
======================================================================
Keywords : kbRegistry kbOSWinCEsearch kbATL300bug kbDSupport kbGrpDSMFCATL
Technology : kbVCsearch kbAudDeveloper kbATLsearch kbATL300 kbWinCETKVCSearch kbWinCESearch kbWinCETK600VC
Version : WINDOWS:3.0,6.0
Issue type : kbbug
Solution Type : kbpending
=============================================================================