PDA

View Full Version : Extraneous registry entries



Greg Law
06-01-2012, 02:09 PM
I am currently evaluating InstallShield 2012 Spring Professional edition and noticed some odd issues with the registry keys created during the installation of a C++ ATL component. For example, in the Registry section I have these entries:



[HKEY_CLASSES_ROOT\CLSID\{9F35E4D5-DCED-46FF-BE7F-08AB08EA5610}\InprocServer32]
@="[INSTALLDIR]TestExtension
ThreadingModel="Apartment"


What I find confusing is that InstallShield is actually creating this in the registry and I have no idea where the extraneous InprocServer32 entry is coming from:



[HKEY_CLASSES_ROOT\CLSID\{9F35E4D5-DCED-46FF-BE7F-08AB08EA5610}\InprocServer32]
@="C:\Program Files\Company\TestExtension\TestExt.dll"
@ThreadingModel="Apartment"
@InprocServer32=hex(7): ... random Unicode gibberish ...


In the entries that register the COM class names, I have



[HKEY_CLASSES_ROOT\TestExt.TestPropExt]
@="TestPropExt Class"

[HKEY_CLASSES_ROOT\TestExt.TestPropExt\CurVer]
@="TestExt.TestPropExt.1"


but it's actually creating these registry entries with an extraneous CLSID key:



[HKEY_CLASSES_ROOT\TestExt.TestPropExt]
@="TestPropExt Class"

[HKEY_CLASSES_ROOT\TestExt.TestPropExt\CurVer]
@="TestExt.TestPropExt.1"

[HKEY_CLASSES_ROOT\TestExt.TestPropExt\CLSID]
@="{35BFF5FF-FA9B-47CB-8C84-A20DD76E42ED}"


This seems to be mostly harmless since the CLSID isn't used here and is actually fetched from the TestExt.TestPropExt.1 key.

I'm confused where these keys are coming from because they don't exist in the Registry table (looking at DirectView) or in the COM registration of my DLL.

MichaelU
06-04-2012, 02:58 PM
I'm less certain on the CLSID in your latter example, but the random looking gibberish is what's called a Darwin Descriptor. It's used by Windows Installer to handle advertisement and resiliency, and is not reflected directly in the tables. I would suggest thinking of it as an implementation detail and not worrying about it.