Как извлечь GUID из Win32 DLL или OCX - PullRequest
3 голосов
/ 28 мая 2010

У нас есть приложение .NET, которое должно исследовать папку, которая может содержать библиотеки COM (DLL и OCX.) Когда мы сталкиваемся с библиотекой COM, нам нужно выполнить одну задачу - извлечь GUID из COM DLL или OCX..

Есть ли простой способ сделать это с .NET без использования сторонних библиотек?

Ответы [ 2 ]

5 голосов
/ 28 мая 2010

Это должно работать для вас. Требуется ссылка на 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())
2 голосов
/ 28 мая 2010

Для этого вам нужно будет использовать взаимодействие (как P / Invoke, так и COM). Сначала вам нужно вызвать LoadTypeLib , чтобы получить интерфейс ITypeLib для библиотеки типов.

Оттуда вам придется использовать соответствующие методы, чтобы получить GUID для библиотеки или получить экземпляры CLSID или IID для всего, что определено в библиотеке.

...