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.