Here is a simple way to make your COM object noncreatable. You can change the attributes of an ATL-based COM object so that the automation client cannot directly create the object. In this case, the object would be returned via a method call on another object rather than created directly. To make an object noncreatable remove the OBJECT_ENTRY for the object from the ATL object map and add the ‘noncreatable’ attribute to the coclass in the IDL file. This prevents a client from using the default class factory to create instances of an object interface.
For example:
[uuid(A1992E3D-3CF0-11D0-826F-00A0C90F2851),helpstring("This class cannot be created directly"),noncreatable]coclass CMyClass{[default] interface IMyInterface;}