Как изменить гид DCOM в vb6? - PullRequest
0 голосов
/ 26 мая 2009

У меня есть служба Windows, которая создает экземпляр объекта dcom с определенным идентификатором A.

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

Как изменить guid замещающего объекта dcom с guid B на guidA?

Ответы [ 3 ]

2 голосов
/ 26 мая 2009

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

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

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

0 голосов
/ 29 мая 2009

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

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

0 голосов
/ 26 мая 2009

Мне удалось перекомпилировать мой замещающий объект DCOM и заставить его использовать Guid A по ...

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

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

...