Quick question. First of all, I'm just starting with VB.Net so I'm kinda new to this (not new to programming though).

Your test application works fine.

I created a new project and just pasted the code from InstalledProgram.vb into a new class (didn't want to use a DLL). Now when I run my little test program, when it enters "GetUserInstallerKeyPrograms()" it croaks on the line

Code:
For Each UserDataKeyName As String In HklmRootKey.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Installer\UserData").GetSubKeyNames
Apparantly, "HklmRootKey.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Installer\UserData").GetSubKeyNam es" contains "Nothing". Oddly enough, in your test app it's not empty (even with the same CuInstallerKey).

So what am I doing wrong?

Also, have you ever implemented getting the Icons as well?