如何从Win32 DLL或OCX中提取GUID

时间:2010-05-28 16:11:01

标签: c# vb.net com guid tlbinf32

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

在不使用第三方库的情况下,使用.NET是否有直接的方法?

2 个答案:

答案 0 :(得分:5)

这对你有用。它需要引用 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 :(得分:2)

为了做到这一点,你必须使用互操作(P / Invoke和COM)。首先,您必须调用LoadTypeLib来获取类型库的ITypeLib接口。

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