2009-05-26 3 views
0

У меня есть служба Windows, которая создает объект dcom с определенным guid A.Как изменить руководство DCOM в vb6?

Мне нужно заменить этот объект dcom новой версией. Когда я создаю и компилирую мой заменяемый объект dcom, он создается с помощью направляющей B.

Как изменить руководство по замене dcom-объекта от guid B до guidA?

ответ

2

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

Если вы пытаетесь изменить, какой объект создается в «клиенте» (DLL или приложение, которое использует класс, опубликованный другой dll/app), вам необходимо изменить ссылку (либо через ссылки, либо компоненты, в зависимости от того, о каком объекте мы говорим), чтобы указать на новую версию сервера (тот, который публикует его класс с обновленным GUID). Это означает удаление текущей ссылки и добавление ссылки на новый сервер. Если имена не изменились, все остальное должно по-прежнему работать так, как было раньше, но незначительное изменение интерфейса классов очевидно.

У вас нет прямого доступа к GUID в VB6, насколько я знаю.

0

мне удалось перекомпилировать замены объекта DCOM и иметь его использовать Guid А по ...

  1. Удалить все ссылки на Guid B из реестра
  2. удалить мой замены DCOM объект исполняемый файл
  3. Копировать в исходном DCOM исполняемый файл
  4. Переименовать оригинальный DCOM исполняемый файл с именем замены
  5. Рекомпилированные В.Б проекта

Я предполагаю, что когда VB заменяет exe-файл, он ищет GUID, а затем повторно использует это для перекомпилированной версии.

0

Вы должны скомпилировать приложение (заменяющий объект DCOM) как бинарный, совместимый с существующей dll, таким образом он наследует один и тот же идентификатор GUID, и номер версии будет увеличиваться. если вы переписываете существующую dll DCOM с заменой, все должно работать.

Например, в VB6 вы можете указать бинарную совместимость в настройках диалога проектов. Не уверен, где вы установите его для C++, я думаю, что GUID вложены в исходный код.