【问题标题】:How do I get the assembly/file versions for an object in VB6?如何在 VB6 中获取对象的程序集/文件版本?
【发布时间】:2010-01-18 16:14:17
【问题描述】:

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

我们遇到了一些参考问题,我能够在有问题的机器上创建后期绑定的对象,所以我希望吐出它正在抓取的版本,以确定该版本的位置。

【问题讨论】:

    标签: vb6 binding version


    【解决方案1】:

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

    如果这是一个进程内对象(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} 是对象的类ID。此条目为您提供了提供对象的 exe 的路径。

    【讨论】:

      【解决方案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.
      

      【讨论】:

      • 收到错误“对象 '_TLIApplication' 的方法 'InterfaceInforFromObject' 失败”。不过它确实可以编译,并且智能感知显示了该方法。
      • 然后试试 ClassInfoFromObject。你永远不会知道。它实际上取决于可以检查的对象。
      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 2020-05-09
      • 2011-04-10
      相关资源
      最近更新 更多