如何在VB6中获取对象的程序集/文件版本?

时间:2010-01-18 16:14:18

标签: vb6 binding version

有没有办法在VB6中获取对象的文件和/或程序集版本?

我们遇到了一些参考问题,而且我能够在遇到问题的机器上进行后期绑定时创建对象,所以我希望吐出它正在寻找的版本以找出该版本的位置。< / p>

2 个答案:

答案 0 :(得分:3)

听起来好像您可以访问问题机器。

如果这是进程内对象(DLL或OCX ),我建议您只使用ProcessExplorer吗?

执行Start \ Run并输入http://live.sysinternals.com/procexp.exe以运行Process Explorer。在进程列表中突出显示您的应用程序,切换到DLL视图,下方窗格将显示进程加载的所有DLL和OCX的路径和版本号。

如果是进程外对象,我建议在注册表中查看哪个程序已注册为服务器。

  1. 首先使用the ProgID to find an entry in the registry找到CLSID。 ProgID是可以与CreateObject一起使用的人类可读字符串,例如, Excel.Application。 CLSID是一个128位数字,十六进制,在一对花括号内。查看注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Classes\{ProgID}\CLSID

  2. 查看HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{ClsId}\下面的LocalServer32条目,其中{ClsId}是对象的class-id。此条目为您提供了提供对象的exe的路径。

答案 1 :(得分:2)

您可能会尝试使用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.