Nel tuo post, non indichi in che modo recuperi le chiavi del registro.
Se fai uso della classe Microsoft.Win32.RegistryKey dovresti trovare a disposizione una funzione GetSubKeyNames() As String( ) che recupera una matrice di stringhe contenente i nomi delle sottochiavi

Sono gestite le seguenti eccezioni:

System.Security.SecurityException: L'utente non dispone delle autorizzazioni necessarie per la lettura dalla chiave.

System.ObjectDisposedException: La chiave Microsoft.Win32.RegistryKey da modificare è chiusa, pertanto non è possibile accedere ad essa.

System.UnauthorizedAccessException: L'utente non dispone dei necessari diritti relativi al Registro di sistema.

System.IO.IOException: Si è verificato un errore di sistema, ad esempio la chiave corrente è stata eliminata.

Spero di esserti stato utile...
Ciao.