+2  A: 

Using CPLApplet:

When Control Panel loads a .dll (or .cpl) file, it calls the CPlApplet function to get information such as the number of Control Panel items the file hosts, as well as information about each item.

When Windows first loads the Control Panel item, it retrieves the address of the CPlApplet function and subsequently uses that address to call the function and pass it messages. It might send the following messages.

You need to handle CPL_INQUIRE Message and fill the CPLINFO Structure.

typedef struct tagCPLINFO {
  int      idIcon;
  int      idName;
  int      idInfo;
  LONG_PTR lpData;
} CPLINFO;

idInfo is the resource identifier of the string containing the description. You cannot simply set this thing by filling in some registry key.

Edit: Ok, my bad, this is an old solution.

AOI Karasu
Yes, this was working before when we installed by copying a .cpl file to system32. We converted to an EXE file in the Program Files area for a variety of reasons, and I wondered if we could get this back.
Ben Straub
+1  A: 

Registering an Executable File (exe) as a Control Panel Applet on Windows Vista using Windows Installer XML (WIX) at http://blogs.msdn.com/b/cjacks/archive/2007/05/03/registering-an-executable-file-exe-as-a-control-panel-applet-on-windows-vista-using-windows-installer-xml-wix.aspx


[previous answer]

See the Executable Control Panel Item Registration of Registering Control Panel Items at http://msdn.microsoft.com/en-us/library/cc144195(VS.85).aspx

Specifically, you want InfoTip, which is the comments.

Registering Control Panel Items

Control Panel items must be registered in order to appear in the Control Panel window. If the Control Panel item is implemented as part of a .exe file then it is registered as a command object. Registration differs if the item is implemented as a .dll file that exports the CPlApplet function.

AMissico
Unfortunately, this doesn't work. The contents of that field appear in the tooltip if you hover over the applet.
Ben Straub
It turns out your original hint was the answer. I had the InfoTip set to "@(path),(index)", and setting it to "@(path),-(index)" made it work. I'm giving you the bounty because you had the right answer first. Thanks!
Ben Straub
Ah, it is always something simple. :O)
AMissico
+1  A: 

This string is retrieved from the HKCR\CLSID{guid}\InfoTip registry value. How to whack the registry into shape is explained very well in this MSDN Library article, not much I can add to that.

Hans Passant