[CodeSnippet] C# Obtener los programas instalados en Windows (Plus: Export to CSV)

Existen dos formas, una es a través del registro y la otra usando WMI. En esta oportunidad mostrare el código usando WMI, porque el registro también devuelve las actualizaciones instaladas.

Enlaces:

 

Notas del código:

  • Si quieren saber que otros campos pueden visualizar de este objeto puede revisar el siguiente enlace: Win32_Product Class.
  • Usamos el CodePage 1252, para no tener problemas con caracteres especiales (ñ) al escribir en el archivo.
  •  

   1:  static void Main(string[] args)
   2:  {
   3:      DisplayInstalledApplications2();
   4:      ExporToCSV();
   5:   
   6:      Console.WriteLine("... ENTER FOR EXIT");
   7:      Console.ReadLine();
   8:  }
   9:   
  10:  static void DisplayInstalledApplications2()
  11:  {
  12:      ManagementObjectSearcher mos = new ManagementObjectSearcher(
  13:                  "SELECT * FROM Win32_Product");
  14:      foreach (ManagementObject mo in mos.Get())
  15:      {
  16:          Console.WriteLine(mo["Name"]);
  17:      }           
  18:   
  19:  }
  20:   
  21:  static void ExporToCSV()
  22:  {
  23:      ManagementObjectSearcher mos = new ManagementObjectSearcher(
  24:                  "SELECT * FROM Win32_Product");
  25:   
  26:      String fileName = "InstalledSoftware_" + DateTime.Now.ToString("yyyy-MM-dd") + ".csv";
  27:   
  28:      if ( File.Exists(fileName) ) File.Delete(fileName);
  29:   
  30:      StringBuilder sbText = new StringBuilder();
  31:      sbText.AppendLine("Name,InstallDate");
  32:      foreach (ManagementObject mo in mos.Get())
  33:      {               
  34:          sbText.AppendFormat(@"""{0}"",""{1}""", mo["Name"], mo["InstallDate"]);
  35:          sbText.AppendLine("");                
  36:      }
  37:   
  38:      using (StreamWriter wr = new StreamWriter(fileName, true, Encoding.GetEncoding(1252)))
  39:      {
  40:          wr.WriteLine(sbText.ToString());
  41:      }
  42:  }

Saludos,