Obteniendo el nombre exe de los programas instalados en C #?

Estoy usando esto para obtener los nombres de los programas, pero necesito los nombres exe. ¿Cómo los encuentro?

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);
     }
}

Estoy tratando de hacer esto:

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

para ejecutar el programa.

Respuestas a la pregunta(3)

Su respuesta a la pregunta