我们有一个 .NET 应用程序需要检查可能包含 COM 库(DLL 和 OCX)的文件夹。当我们遇到 COM 库时,我们需要完成的一件事是从 COM DLL 或 OCX 中提取 GUID。
有没有一种直接的方法可以在不使用 3rd 方库的情况下使用 .NET 来做到这一点?
这应该适合你。它需要引用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 实例。