The following routine parses the registry and lists all the installed COM components:
' this code assumes that you have used this Imports statement' Imports Microsoft.Win32' Print ProgID, CLSID, and path of all the COM components' installed on this computer.Sub DisplayCOMComponents() ' Open the HKEY_CLASSES_ROOTCLSID key Dim regClsid As RegistryKey = Registry.ClassesRoot.OpenSubKey("CLSID") ' Iterate over all the subkeys. Dim clsid As String For Each clsid In regClsid.GetSubKeyNames ' Open the subkey. Dim regClsidKey As RegistryKey = regClsid.OpenSubKey(clsid) ' Get the ProgID. (This is the default value for this key.) Dim ProgID As String = CStr(regClsidKey.GetValue("")) ' Get the InProcServer32 key, which holds the DLL path. Dim regPath As RegistryKey = regClsidKey.OpenSubKey("InprocServer32") If regPath Is Nothing Then ' If not found, it isn't an in-process DLL server, ' let's see if it's an out-of-process EXE server. regPath = regClsidKey.OpenSubKey("LocalServer32") End If If Not (regPath Is Nothing) Then ' If either key has been found, retrieve its default value. Dim filePath As String = CStr(regPath.GetValue("")) ' Display all the relevant info gathered so far. Console.WriteLine(ProgId & " " & clsid & " -> " & filePath) ' Always close registry keys. regPath.Close() End If ' Always close registry keys. regClsidKey.Close() NextEnd Sub