Geoff Chappell - Software Analyst
Instances of the system type of assocation element are created by passing the corresponding CLSID to the AssocCreateElement function:
As with all assocation elements, system elements implement the IAssociationElement, IObjectWithQuerySource and IPersistString2 interfaces. However, all the methods of a system element are the same as for the basic shell element except for SetString and GetClassID. In effect, a system element is just a shell element with a different query source.
When a system element is initialised through its SetString method, the registry key that is used as the query source is:
in which InitString is whatever is passed to the SetString method.
In ordinary usage, a system element exists within a QueryAssociations object, also called an association array. One way to get a system element created in an association array is to call the AssocCreateForClasses function and specify either ASSOCCLASS_SHELL_KEY or ASSOCCLASS_SYSTEM_STR as the type for one or more association elements.