Looking through our MMC snap-in code I can't get one concept. We have a tree of different class items inserted into MMC snap-in root node and only two of them register themselves as extensions. These two classes are nothing special compared to any other classes we use to represent the MMC tree items. Yet only these two register themselves in the registry in the NodeTypes
key and other classes do not.
The only explanation I have is that we don't need to register them at all - just register the snap-in. However I'm not sure.
What are those extensions snap-ins, how are they used and what exactly do I get after registering some class as an extension snap-in in the registry?
Did you read this?
Extension snap-ins extend the functionality of other snap-ins, but they are not directly added to a console like stand-alone snap-ins. Extension snap-ins can add context menu items, property pages, toolbar buttons, taskpad tasks, and items to the namespace of the extended snap-in (also called the primary snap-in).
Primary snap-ins can themselves extend the functionality of other snap-ins. That is, the same snap-in code base can create a primary snap-in instance and an extension snap-in instance.
An extension snap-in is loaded only when the snap-in it extends is loaded and the feature it extends is used. For example, when the user displays a context menu in a stand-alone snap-in, MMC builds the context menu, prompts the stand-alone snap-in to add its items, and then prompts the extension snap-in to add its items. After all snap-ins have added their items, MMC displays the context menu and then forwards the menu click to the snap-in that owns the item.
An extension snap-in can extend only the node types that a stand-alone snap-in indicates as being extendable. The extension snap-in declares itself as a subordinate to the extendable node types, and then for each occurrence of those node types in the console, the console automatically adds the related snap-in extensions below it.
It is important to understand that a node type can represent a scope item, a standard list view result item, or a virtual list view result item added by the primary snap-in. Consult the documentation for the primary snap-in to determine what the node type represents and the format of its exported data.