【发布时间】:2018-11-22 04:47:12
【问题描述】:
我们有一个 .NET 应用程序需要检查可能包含 COM 库(DLL 和 OCX)的文件夹。当我们遇到 COM 库时,我们需要完成的一件事是从 COM DLL 或 OCX 中提取 GUID .
有没有一种直接的方法可以在不使用 3rd 方库的情况下使用 .NET 来做到这一点?
【问题讨论】:
标签: c# vb.net com guid tlbinf32
我们有一个 .NET 应用程序需要检查可能包含 COM 库(DLL 和 OCX)的文件夹。当我们遇到 COM 库时,我们需要完成的一件事是从 COM DLL 或 OCX 中提取 GUID .
有没有一种直接的方法可以在不使用 3rd 方库的情况下使用 .NET 来做到这一点?
【问题讨论】:
标签: c# vb.net com guid tlbinf32
这应该适合你。它需要对 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())
【讨论】:
您必须使用互操作(P/Invoke 和 COM)才能执行此操作。首先,您必须调用 LoadTypeLib 来获取类型库的 ITypeLib 接口。
从那里,您必须使用其上的方法来获取库的 GUID,或获取库中定义的任何内容的 CLSID 或 IID 实例。
【讨论】: