Как получить версии сборки / файла для объекта в VB6? - PullRequest
1 голос
/ 18 января 2010

Есть ли способ получить версию файла и / или сборки для объекта в VB6?

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

Ответы [ 2 ]

3 голосов
/ 18 января 2010

Звучит так, как будто у вас есть доступ к проблемной машине.

Если это внутрипроцессный объект (DLL или OCX ), я могу порекомендовать вам просто использовать ProcessExplorer вместо?

Do Start \ Run и введите http://live.sysinternals.com/procexp.exe, чтобы запустить Process Explorer.Выделите ваше приложение в списке процессов, переключитесь в представление DLL, и на нижней панели отобразится путь и номер версии всех DLL и OCX, загруженных процессом.

Если это внепроцессный объект , я предлагаю заглянуть в реестр, чтобы увидеть, какая программа зарегистрирована в качестве сервера.

  1. Сначала найдите CLSID, используя ProgID, чтобы найти запись в реестре .ProgID - это читаемая человеком строка, которую можно использовать с CreateObject, например Excel.Application.CLSID - это 128-битное число в шестнадцатеричном виде в паре фигурных скобок.Посмотрите на запись реестра HKEY_LOCAL_MACHINE\SOFTWARE\Classes\{ProgID}\CLSID

  2. Посмотрите на запись LocalServer32 под HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{ClsId}\, где {ClsId} - идентификатор класса объекта.Эта запись дает вам путь к exe, который предоставляет объект.

2 голосов
/ 18 января 2010

Вы можете попытаться использовать TypeLibInfo для получения некоторой информации.

В VB6 перейдите в раздел Ссылки и справочник TypeLib Information. Затем создайте объект и в отладчике попытайтесь изучить различные свойства. Пример:

  Dim x As Object

  Set x = CreateObject("Excel.Application")
  x.Visible = True


  Dim ti As TLI.TLIApplication
  Set ti = New TLI.TLIApplication

  With ti.InterfaceInfoFromObject(x)
    MsgBox .Guid
  End With


  'Close Excel yourself if things went bad.
...