ProgID Key

A programmatic identifier (ProgID) is a registry entry that can be associated with a CLSID. The format of a ProgID is <Vendor>.<Component>.<Version>, separated by periods and with no spaces, as in Word.Document.6. Like the CLSID, the ProgID identifies a class, but with less precision. The ProgID is stored under the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<ProgID> =

You can use a ProgID in programming situations where it is not possible to use a CLSID. ProgIDs should not appear in the user interface. ProgIDs are not guaranteed to be unique so they can be used only where name collisions will be avoided.

The following list shows the requirements associated with the <ProgID>. It must:

  • Have no more than 39 characters.
  • Contain no punctuation (including underscores) except one or more periods.
  • Not start with a digit.
  • Be different from the class name of any OLE 1 application, including the OLE 1 version of the same application, if there is one.

Because the <ProgID> should not appear in the user interface, you can obtain a displayable name by calling IOleObject::GetUserType.

The value of the <ProgID> is a human readable name such as Microsoft Word Document, and is displayed in dialog boxes.

The following table shows the named values for the HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<ProgID> key.

Value : type Description
\<CLSID> = HumanReadableName A globally unique identifier (GUID) used to map information about a component class. The value entry specifies a human readable name that can be displayed in the user interface.

COM uses the information mapped by the CLSID to locate and create an instance the object associated with the CLISID.

\Protocol
\StdFileEditing
\Server = <full path to OLE 2 server app>
\Verb =
\0 = <verb value0>
\1 = <verb value>
\, ...
Indicates that this OLE 2 class is insertable in OLE 1 containers.

The <full path to OLE 2 server app> value specifies the full path to the OLE 2 server application.

The <verb value> specifies the primary verb; this value must start with zero.

The <verb value>, ... value specifies additional verbs, numbered consecutively.

The StdFileEditing entry specifies OLE 1 compatibility information. It should be present only if objects of this class are insertable in OLE 1 containers.

\Shell
\Open
\command = <path to application exe %1>
\Print
\command = <path to application exe %1>
This value provides Windows 3.1 shell printing and File Open information. The value entries specify the path to the executable. Windows CE .NET does not use these values directly, but they might be used by an application.

These entries should provide the path and filename of the application. The following examples are simple entries. More complex entries could contain DDE entries.

HKEY_CLASSES_ROOT\OLE2ISvrOtl\Shell\Print\Command = 
c:\svr\isvrotl.exe %1 
HKEY_CLASSES_ROOT\OLE2ISvrOtl\Shell\Open\Command = 
c:\svr\isvrotl.exe %1 

See Also

COM Registry Settings | COM Security | Component Services (COM and DCOM) | Enhancing the Security of a Device

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.