Home Tutorials What is CLSID?

What is CLSID?

Posted: August 10, 2009

A CLSID is an acronym used to describe a software application's class ID or "class identifier." In other words, a CLSID is a unique identification number given to software applications or software components to function as a kind of 'social security number' for any particular piece of software.

CLSIDs form a subcategory of 'Globally Unique Identifiers,' or GUIDs, that are regularly used in COM, and as such, CLSIDs are used to specifically identify COM objects. COM, or "Component Object Model", is a Microsoft architectural model that is applied to component software applications and defines a configuration for building program routines (i.e. COM objects) that can be executed and launched in a Windows environment. COM objects, then, are software components within the COM that can be called up whenever its services are needed. This is where the CLSIDs come into play.

CLSID values are written to your computer's registry, at HKEY_CLASSES_ROOTS\CLSID, so that individual COM components can be automatically uploaded by other programs. The purpose of applying a CLSID registry key to a software application is to enable Microsoft Windows to employ a CLSID number to identify and/or call up various COM objects without the added necessity of knowing their names. CLSIDs are also employed by software programs to identify computers, files, etc.

How are CLSIDs Generated?

A utility program, provided by Microsoft, called GUIDGEN.EXE generates CLSID identification numbers. So that two numbers will never be the same, this program uses your network adapter address, the current time, as well as other items stored in your computer to generate an absolutely unique CLSID number every time. Statistically, there is very little chance of a CLSID being duplicated, and this is important because these identifying numbers are meant to be used across an array of different computers and networks. In appearance, CLSIDs are stored as large, 128-bit numbers that are 32 characters long, and are usually displayed as follows:

Normally, this identification number is represented as either one of the following:

a) a 16 integer group of bytes
b) an individually designed string of hexadecimal figures, where the letters a through f - or A through F - represent the numbers 10-15

Therefore, each COM object is supplied with a unique CLSID tag for purposes of identification and is then stored in your computer's registry. Your computer's registry is where the record of all that happens on your computer is saved. From programs and files saved on your machine's hard-drive to your PC's hardware details, your computer's registry stores it all. The only problem is, though the registry on your PC is definitely handy, it possesses no means of automatically ridding your system of outdated information and CLSIDs. This means that over time outdated and unused information and CLSIDs build up inside your PC's registry and causes your computer system to perform slower and slower.The CLSID is stored under the following registry key HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID} and the table below shows the named values for the CLSID key.

Registry key Description
\AppID = {CLSID} Affiliates an AppID with a CLSID.
\AutoConvertTo = {CLSID} Designates the automatic conversion of a given class of objects to a new class of objects.
\AutoTreatAs = {CLSID} Immediately sets the CLSID for the TreatAs key to the specified value.
\AuxUserType Designates a program's short display name and program names.
\Control Recognizes an object as an ActiveX Control.
\Conversion Used by the Convert dialog box to determine the formats a program can read and write.
\DataFormats Designates the default and main data formats supported by a program.
\DefaultIcon = {full path to exe, resource id} Provides default icon information for iconic presentations of objects.
\InprocHandler32 = {handler.dll} Designates whether a program uses a custom handler.
\InprocHandler32 Designates whether a program uses a custom handler.
\InprocServer Designates the path to the in-process server DLL.
\InprocServer32 = {path to 32-bit inproc server} Registers a 32-bit in-process server and designates the threading model of the apartment the server can run in.
\Insertable Indicates that objects of this class should appear in the Insert Object dialog box list box when used by COM container programs.
\{IID} = {name of interface1}
\{IID} = {name of interface2}
An alternative entry that designates all interface IDs (IIDs) supported by the associated class.
\LocalServer Designates the full path to a 16-bit local server program.
\LocalServer32 = {full path} Designates the full path to a 32-bit local server program.
\MiscStatus Designates how to make and display an object.
\ProgID = {programmatic identifier} Affiliates a ProgID with a CLSID.
\ToolBoxBitmap32 Recognizes the module name and resource ID for a 16 x 16 bitmap to use for the face of a toolbar or toolbox button.
\TreatAs = {CLSID} Designates the CLSID of a class that can emulate the current class.
\1 = {verb1}
\2 = {verb2}
\3 =
Designates the verbs to be registered for a program.
\Version = {VersionNumber} Designates the version number of the control.
\VersionIndependentProgID Affiliates a ProgID with a CLSID. This value is used to decide the latest version of an object program.

How Do You Unclutter Your PC's Cluttered Registry? A good registry cleaner will do the trick. The purpose of a registry cleaner is to assist you in removing old and unneeded clutter from your computer's registry, thus allowing your PC to return to its 'good-ole days' of functioning faster and smoother.