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
[
uuid(A1992E3D-3CF0-11D0-826F-00A0C90F2851),
helpstring(“MyObject”),
noncreatable
]
coclass MyObject
{
[default] interface IMyInterface;
}