Я думаю, что @quip имел в виду набор интерфейсов IClassFactory2, который поддерживает лицензирование. Смотрите здесь:
http://msdn.microsoft.com/en-us/library/ms680095(v=VS.85).aspx
В статье рассматриваются лицензии для каждой машины (а это не то, что вам нужно) и лицензионные ключи времени выполнения, которые звучат так, как вы ищете.
Дело в том, что App1, который авторизован, должен вызвать CoGetClassObject (), чтобы получить объект, который реализует IClassFactory2, а затем вызвать IClassFactory2 :: CreateInstanceLic (), передав секретный ключ, который позволяет COM-серверу узнать, что он авторизован. Это, в свою очередь, создаст экземпляр вашего COM-объекта с соответствующими флагами, указывающими, что он доступен для полного использования (при условии действительного ключа). Если передан неверный ключ, инициализируйте ваш COM-объект для использования неавторизованным клиентом.
App2, который не авторизован, будет вызывать стандартную функцию CoCreateInstance (), которая под прикрытием вызывает CoGetClassObject () для получения объекта, реализующего IClassFactory, а затем вызывает IClassFactory :: CreateInstance (). Эта реализация должна создавать экземпляр вашего COM-объекта с флагами, установленными для неавторизованного клиента.