Registering Preview Handlers

This topic explains how to register a preview handler associated with a given data type. For the purposes of illustration, examples in this topic use a .xyz file type.

Registration of a preview handler is a standard file association-based registration.

Registering a Preview Handler

A file extension is associated with a ProgID. The following entry associates the xyzfile ProgID subkey with the .xyz file extension.

HKEY_CLASSES_ROOT

  • .xyz

The xyzfile ProgID subkey is stored with the other ProgIDs as shown here:

HKEY_CLASSES_ROOT

  • xyzfile

Each preview handler ProgID subkey contains a subkey named shellex that contains a subkey always named {8895b1c6-b41f-4c1c-a562-0d564250836f} . The presence of that subkey tells the system that the handler is a preview handler.

The default value of the {8895b1c6-b41f-4c1c-a562-0d564250836f} subkey is the class identifier (CLSID) of your handler. An example of the xyzfile ProgID subkey is shown here, associating a handler of CLSID {ec3a629a-a47c-4245-bc78-b4b63d0e3154}.

HKEY_CLASSES_ROOT

xyzfile

shellex

  • {8895b1c6-b41f-4c1c-a562-0d564250836f}

Next, add the subkey under CLSID for your preview handler. An example is shown here. An explanation of individual entries follows.

HKEY_CLASSES_ROOT

CLSID

{ec3a629a-a47c-4245-bc78-b4b63d0e3154}

(Default) = [REG_SZ] Fabricam XYZ Preview Handler
DisplayName = [REG_SZ] @myhandler.dll,-101
Icon = [REG_SZ] myhandler.dll,201
AppID = [REG_SZ] {6d2b5079-2f0b-48dd-ab7f-97cec514d30b}

  • InprocServer32

The default value for your subkey (here, {ec3a629a-a47c-4245-bc78-b4b63d0e3154} ) is not required or used. However, setting it to a nonlocalized string can help you to debug registration issues.

The minus sign (-101) in the .dll resource in the DisplayName entry exists for legacy reasons. The Icon entry, on the other hand, does not require a minus sign.

The AppID value gives a reference to the AppID of the application associated with the file extension (stored under HKEY_CLASSES_ROOT\APPID . Note that the value used here—{6d2b5079-2f0b-48dd-ab7f-97cec514d30b}—is the ID of the Prevhost.exe surrogate host.

The entries under the InprocServer32 subkey include a reference back to the file extension's ProgID subkey as well as an entry for a VersionIndependentProgID.

Finally, the preview handler must be added to the list of all preview handlers. This list is used as an optimization by the system to enumerate all registered preview handlers for display purposes. Again, the default value is not required, it simply aids in the debugging process.

HKEY_LOCAL_MACHINE

SOFTWARE

Microsoft

Windows

CurrentVersion

PreviewHandlers

  • {ec3a629a-a47c-4245-bc78-b4b63d0e3154}