Search notes:

Registry: HKEY_CLASSES_ROOT\TypeLib

HKEY_CLASSES_ROOT\TypeLib stores information about type libraries. This key has subkeys each of which is a GUID (referred to as libUUID) and each subkey describes one(?) type lib.
These libUUIDs are (or might be?) referenced by the default value of under the key Registry: HKEY_CLASSES_ROOT\CLSID\{GUID}[HKEY_CLASSES_ROOT\CLSID{CLSID-GUID}\TypeLib.
Usually, type libs are files with the .tlb or .olb (where olb is an Office type library, but the o stands for object, not for Office).

Registry entries

A subkey below the libUUID subkey is the version of the type library in major.minor form.
These (or some of these?) entries are created by calling RegisterTypeLib in a type library.
In a Visual Basic for Application project, references to a type library can be added with ….references.addFromGUID(…).

PowerShell script to list type libraries

The following PowerShell script iterates over the type libraries that are registered in the Registry and prints their libUUID, version (major.minor), name and the file system path of the type library itself.
set-strictMode -version latest

$null = new-psDrive -name HKCR -psProvider registry -root HKEY_CLASSES_ROOT

[Microsoft.Win32.RegistryKey] $regTypeLibs = get-item hkcr:/TypeLib

$last_guid = ''
foreach ($guid in $regTypeLibs.GetSubKeyNames()) {

   $regTypeLib = $regTypeLibs.OpenSubKey($guid)

   foreach ($version in $regTypeLib.GetSubKeyNames()) {

      $regVersion = $regTypeLib.OpenSubKey($version)
      $typeLibName = $regVersion.GetValue('')

      foreach ($versionKey in $regVersion.GetSubKeyNames()) {

         $regVersionKey = $regVersion.OpenSubKey($versionKey)

         if ($versionKey -match '^\d+$') { # typically a zero ('0', but other numbers are also seen)

            foreach ($winX in $regVersionKey.GetSubKeyNames()) {
               $regWinX = $regVersionKey.OpenSubKey($winX)
               $typeLibPath = $regWinX.GetValue('')

               if ($guid -eq $last_guid) {
                 $guid_ = ''
               }
               else {
                 $guid_ = $guid
               }

              '{0,38} {1,8} {2,-100} - {3,5} {4} ' -f $guid_, $version, $typeLibName, $winX, $typeLibPath

               $last_guid = $guid

            }
         }
      }
   }
}
Github repository about-Windows-Registry, path: /HKEY_CLASSES_ROOT/TypeLib/list-type-libraries.ps1

TODO

Some (most? all/) Type libraries registered under HKCR\TypeLib can be added as object library to a VBA Project, see VB Editor menu: Tools -> References.

See also

TlbImp.exe and TlbExp.exe.

Index