Fog Creek Software
Discussion Board

Can't find the *&(*& clsid

This should be easier, which is why I'm getting so irritated with this.

I am trying to get a clsid history of an Activex dll from sourcesafe.  I'm doing it the long way round, so I've gone back in the history and got an old copy of the file.

Now, how on earth do I find out what the Clsid was for this dll.

I don't wan't to register the thing, I just want to know what its clsid is.  Properties won't tell me, dragging it into Oleview won't tell me. 

Why is this so difficult?

Ged Byrne
Tuesday, April 15, 2003

Well, one way is to search the registry for the name of the COM class. There is a section in the registry that contains the CLSID of all COM objects.

Mark Hoffman
Tuesday, April 15, 2003

If all you have is the binary, you have to register it. Sorry.

If you have the source code, then how you'd find it depends on what language and what libraries were used to build it.

Brad Wilson (
Tuesday, April 15, 2003

I personally would just run regmon and watch what registry keys get updated when you register the DLL. 

The fact that oleview does not give you any information tells me that possibly the type library for the coclass is not even stored in the DLL. Remember, DLLs do not have class ids -- coclasses have class ids, and coclasses are described by type libraries.  oleview is a type library viewer -- if the type library is not in the DLL then there's no clsid to see.

That would be pretty odd though.  I don't think I've ever written a DLL which did not contain its own type libraries.  Can you look at the DLL with a resource viewer and see what resources are in there?


Eric Lippert
Tuesday, April 15, 2003

Actually, "dragging" something into Oleview creates a "Drag and Drop Data Object" instance... This is not what you want. Try "View TypeLib..." from the File menu instead.

Danko Durbic
Tuesday, April 15, 2003

COM does not require type-libraries. They are optional.

Brad Wilson (
Tuesday, April 15, 2003

View TypeLib worked, and I was able to find the information I needed.

Registering the component wasn't viable because this is a previous version of a dll currently registered as part of an app.

I don't even want to think about the hassle that registering this older version could cause me.

Thanks Danko.

Ged Byrne
Tuesday, April 15, 2003

*  Recent Topics

*  Fog Creek Home