This would be a pretty good start:

Enum all the keys here:

HKEY_CLASSES_ROOT\CLSID

Look specifically at this value in keyname:

HKEY_CLASSES_ROOT\CLSID\<keyname>\InprocServer32

This will point you to the DLL, the PROGID is also there (the one that is used for CreateObject())

Not every COM object has a InprocServer32 ... the other one (iirc) is RemoteServer for DCOM type objects (DLL's running on remote servers).

-Shawn