2010-07-08 5 views
2

Это немного длинный снимок, но кто-нибудь знает, как заменить реализацию класса COM во время выполнения (или, если это действительно возможно)?Заменить реализацию класса COM во время выполнения

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

Я посмотрел на OLE/COM Object Viewer, и есть варианты для изменения реализации, но я не знаю, как правильно настроить его, поскольку он, похоже, не очень-то работает.

Если у кого-то есть какая-либо информация (даже ответ «нет, не представляется возможным», который я подозреваю, это так), это было бы отлично.

Cheers, Dan.

ответ

2

Я не понимаю, почему полная перестройка? Вы просто меняете реализацию, интерфейс и GUID GUID, а также не должны меняться определение интерфейса. Это все, что COM-клиенты знают о COM-сервере.

Если вы указали do, измените определение интерфейса, тогда вам нужно назначить новые идентификаторы GUID. Очень жесткое правило в COM, пропуская его, покупает огромный DLL Hell. Да, для этого требуется полная перестройка.

1

Реализация COM-объекта определяется тем, какая DLL зарегистрирована как «сервер» для этого CLSID. Поэтому просто создайте объект, который идентичен оригиналу, кроме исправления ошибок, и зарегистрируйте его.

Смежные вопросы