Я пишу инструмент, в котором у меня есть COM-компонент (например, DLL) с файлом манифеста (Sxs/RegFree). Мой инструмент перебирает все идентификаторы классов и должен проверить, могу ли я создать экземпляр с этим идентификатором класса.
НО, есть некоторые проблемы. Некоторые COM-объекты (классы) запрограммированы таким образом, что я не могу создать экземпляр, потому что это просто запрещено.
В одной из моих итераций мой инструмент дает сбой, потому что он хочет создать экземпляр из объекта, где это запрещено. Даже попытка... catch не помогает. При отладке с Visual Studio 2013 получаю информацию, что произошла ошибка с кучей.
Итак, мой вопрос: как-то возможно получить некоторую информацию о COM-объекте, например, может ли кто-то создать экземпляр из этого идентификатора класса перед созданием экземпляра?
EDIT: Вот код, в котором я создаю экземпляр:
var clsid = new Guid(guid);
Guid IID_IUnknown = new Guid("00000000-0000-0000-C000-000000000046");
object instance = null;
hResult = CoCreateInstance(ref clsid, null, CLSCTX_INPROC_SERVER, ref IID_IUnknown, out instance);
if (hResult > 0x7FFFFFFF)
{
// ...
}