Можно ли использовать сторонний COM-компонент с COM без регистрации?
Глядя на COM без регистрации, мне все еще неясно, можете ли вы просто взять какой-либо существующий, абсолютно незнакомый COM-компонент (*) и использовать его без регистрации, добавив правильные файлы манифеста.
Это должно работать во всех случаях.
Что с квартирой вещи (comInterfaceProxyStub
) о чем они говорят?
(*): (например, файл ocx или другая внутрипроцессная DLL-библиотека COM-сервера, которую предполагается использовать с regsvr32
1 ответ
Да, без проблем. Манифест просто предоставляет конфигурацию, которую COM обычно читает из реестра. Таким образом, термин "без регистрации". Типичная проблема при написании одного для стороннего сервера заключается в том, что вы не знаете руководства. Обратите внимание на изменения, которые Regsvr32.exe вносит в реестр с помощью ProcMon от SysInternals, или обратитесь за помощью к поставщику.
"Квартирный материал" - это просто дополнительный конфиг, ключи записаны в HKLM\Software\Classes\Interface. Требуется COM, когда интерфейсный вызов должен быть перенаправлен из одного потока, процесса или машины в другой. COM нуждается в помощи, чтобы выяснить, как сериализовать аргументы метода в пакет взаимодействия взаимодействия. Он не знает, как выглядит функция, поэтому нуждается в помощи прокси и заглушки. Вспомогательная DLL, зарегистрированная с ключом ProxyStubClsId32, обеспечивает реализацию прокси и заглушки. Автоматически генерируется из IDL или предоставляется стандартным маршаллером автоматизации, который использует библиотеку типов для обнаружения объявления функции. Элемент comInterfaceProxyStub предоставляет версию манифеста этой регистрации.