# VersionIndependentProgID Key

The values associated with this key associate a ProgID with a CLSID. Used to determine the latest version of an object application.

Registry Entry

HKEY_LOCAL_MACHINE\SOFTWARE\Classes
\<VersionIndependentProgID> = <Vendor>.<Component>
\CLSID = <CLSID>
\CurVer = <ProgID>

Value Entries

<Vendor>.<Component>
  The name of the latest version of the object application.
<CLSID>
  The CLSID of the newest installed version of the class.
<ProgID>
  The <ProgID> of the newest installed version of the class.

Remarks

The format or the <VersionIndependentProgID> is <Vendor>.<Component>, separated by periods, no spaces, and no version number. The version-independent ProgID, like the ProgID, can be registered with a human readable name.

Applications must register a version-independent programmatic identifier under the VersionIndependentProgID key. The <VersionIndependentProgID> refers to the application’s class, and does not change from version to version, instead remaining constant across all versions, for example, Microsoft Word Document. It is used with macro languages and refers to the currently installed version of the application’s class. The <VersionIndependentProgID> must correspond to the name of the latest version of the object application.

The <VersionIndependentProgID> is used when, for example, a container application creates a chart or table with a toolbar button. In this situation the application can use the <VersionIndependentProgID> to determine the latest version of the needed object application.

The <VersionIndependentProgID> is stored and maintained solely by application code. When given the VersionIndependentProgID, the CLSIDFromProgID function returns the CLSID of the current version.

You can use CLSIDFromProgID and ProgIDFromCLSID to convert between these two representations.

You can use IOleObject::GetUserType or OleRegGetUserType to change the identifier to a displayable string.

If A custom handler is not used, the entry should be set to OLE32.DLL, as shown in the following example.

    HKEY_-CLASSES_ROOT\CLSID\{00000402-0000-0000-C000-000000000046}
        \InprocHandler = ole32.dll

In addition to the preceding registry entry, you should add the following corresponding entry under the CLSID key:

    \CLSID
        \<CLSID>  = <human readable name>
            \<VersionIndependentProgID> = human readable name

See Also

ProgID, CLSIDFromProgID, ProgIDFromCLSID, IOleObject::GetUserType, OleRegGetUserType