The information in this article applies to:
SYMPTOMSIf 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. CAUSEDuring 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. RESOLUTIONIn the function CRegParser::HasValues() in STATREG.h, the following line needs to be changed from:
to:
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.
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. MORE INFORMATIONMake 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 kbWinCE kbATL300bug kbDSupport kbGrpMFCATL |
|
Last Reviewed: January 5, 2000 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |