Регистрация Бесплатные ошибки COM с EXE - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь использовать функции COM, предоставляемые EXE.Я создал проект C # с использованием Visual Studio 2010 (на компьютере с windows7 / x64) и добавил ссылку на этот EXE-файл, а затем установил для флага Isolated значение true.Когда я создаю решение, я получаю ошибки для каждого из представленных классов.

Проблема изоляции ссылки на COM 'FNCClient11Lib': ключ реестра 'HKEY_CURRENT_USER \ SOFTWARE \ CLASSES \ CLSID {e49b30c9-6d7e-48f5-91da-f2f0414c6a13} \ InProcServer32 'отсутствует значение' (по умолчанию) '.

Эти записи не существуют в реестре в этом месте, но существуют здесь (ниже)

HKEY_CURRENT_USER \ Software \ Classes \ Wow6432Node \ CLSID {E49B30C9-6D7E-48F5-91DA-F2F0414C6A13}

  • Есть ли способ указать это в нужном месте вреестр при сборке?
  • Можно ли ссылаться на EXE?Все примеры, которые я видел до сих пор, относятся только к DLL.

1 Ответ

1 голос
/ 24 июля 2014

Эта проблема возникает, когда библиотека типов содержит классы, помеченные как «не поддающиеся обработке» в интерфейсе COM.Вы можете проверить это с помощью OLE / COM Viewer (от имени администратора), перейдя к библиотеке типов, которая вызывает проблему, открыв ее и посмотрев определения CoClass.Если тот, кто использует указанный uuid, объявлен «не поддающимся обработке», вы его получите.Кроме того, в браузере объектов VS эти предложения не предоставляют конструктор в интерфейсе.

Мое решение состояло в том, чтобы перестроить компонент COM с помощью открытого конструктора для этих классов, но, конечно, это возможно, только еслиесть источники.

Наконец, могут быть и другие причины этого симптома, хотя ...

...