Instances of the extension type of assocation element are created by passing the corresponding CLSID to the AssocCreateElement function:

CLSID_AssocExtensionElement {039A5DEA-159C-48B8-9DD3-56413A78FDE2}

As with all assocation elements, the extension element implements the IAssociationElement, IObjectWithQuerySource and IPersistString2 interfaces. However, all the methods of an extension element are the same as for the basic ProgID element except for SetString and GetClassID. In effect, an extension element is just a ProgID element with a different query source.

Initialisation String

When an extension element is initialised through its SetString method, the registry key that is used for the query source is:


in which InitString is whatever is passed to the SetString method.

An extension element is initialised as if the initialisation string is not a file extension. There is no secondary query source. Queries 0x80070002 and 0x00020014 are not supported. Query 0x81470002 is answered only from the query source described above.

Also, since no ProgID is found for the extension element, none can be produced in the fall-back case for query 0x00070004. If no ProgID is obtained from a Progid subkey, the query succeeds but the answer is empty.