如何从Win32 DLL或OCX中提取GUID

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

在没有使用第三方库的情况下,有没有直接的方法使用.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()) 

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

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