Pobieranie nazwy zainstalowanych programów w C #?

Używam tego, aby uzyskać nazwy programów, ale potrzebuję nazw exe. Jak je znaleźć?

string SoftwareKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products";
RegistryKey rk = default(RegistryKey);
rk = Registry.LocalMachine.OpenSubKey(SoftwareKey);
//string skname = null;
string sname = string.Empty;

foreach (string skname in rk.GetSubKeyNames())
{

  try
    {
       sname = Registry.LocalMachine.OpenSubKey(SoftwareKey).OpenSubKey(skname).OpenSubKey("InstallProperties").GetValue("DisplayName").ToString();
       listBox1.Items.Add(sname);
     }
     catch (Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
}

Próbuję to zrobić:

System.Diagnostics.Process.Start("Name.exe");

uruchomić program.

questionAnswers(3)

yourAnswerToTheQuestion