【问题标题】:How to extract a GUID from a Win32 DLL or OCX如何从 Win32 DLL 或 OCX 中提取 GUID
【发布时间】:2018-11-22 04:47:12
【问题描述】:

我们有一个 .NET 应用程序需要检查可能包含 COM 库(DLL 和 OCX)的文件夹。当我们遇到 COM 库时,我们需要完成的一件事是从 COM DLL 或 OCX 中提取 GUID .

有没有一种直接的方法可以在不使用 3rd 方库的情况下使用 .NET 来做到这一点?

【问题讨论】:

    标签: c# vb.net com guid tlbinf32


    【解决方案1】:

    这应该适合你。它需要对 c:\windows\system32\tlbinf32.dll 的引用,但我认为这没问题,因为它不是第三方组件。

    Imports TLI 'from c:\windows\system32\tlbinf32.dll
    
    Dim reglib As TLI.TLIApplication = New TLI.TLIApplicationClass()
    Dim DLLPath As String = "c:\mycomponent.ocx"
    MsgBox(reglib.TypeLibInfoFromFile(DLLPath).GUID.ToString())
    

    【讨论】:

    • +1,我也考虑过这种方法(参见msdn.microsoft.com/en-us/magazine/bb985086.aspx),但我相信 tlbinf32.dll 仅随 VS 6.0(和/或 VB6)一起提供,至少它我的系统上不存在。
    • 你可能是对的。我在我的开发机器上安装了 VB6,用于维护一些旧的 ActiveX 控件和遗留代码。但是,我找到了几个可以下载它的网站,并且您可以免费分发它。
    • 这个问题有 C# 标签。是否也可以提供 C# 版本的答案?
    【解决方案2】:

    您必须使用互操作(P/Invoke 和 COM)才能执行此操作。首先,您必须调用 LoadTypeLib 来获取类型库的 ITypeLib 接口。

    从那里,您必须使用其上的方法来获取库的 GUID,或获取库中定义的任何内容的 CLSID 或 IID 实例。

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多