Pregunta

Uso de C #, ¿cómo puedo determinar qué programa está registrado como cliente de correo electrónico predeterminado? No necesito a lanzar la aplicación, sólo quiero saber lo que es.

¿Fue útil?

Solución

Utilice la clase del registro para buscar el registro. Esta aplicación de consola demuestra el principio.

using System;
using Microsoft.Win32;

namespace RegistryTestApp
{
   class Program
   {
      static void Main(string[] args)
      {
         object mailClient = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail", "", "none"); 
         Console.WriteLine(mailClient.ToString());
      }
   }
}

Otros consejos

Usted puede mirar en el registro en la siguiente clave:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail

Usted puede leer esta clave de registro de

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail

cliente de correo electrónico predeterminado depende del usuario. HKLM listas de todos los clientes de correo electrónico registrados; el primero devuelto puede que no sea por defecto del usuario actual. Mejor leer HKEY_CURRENT_USER\Software\Clients\Mail.

También esto sólo le da el nombre de la aplicación de correo electrónico. Si desea que su nombre de archivo ejecutable, que tiene que seguir con algo como:

object mailCommand = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\" + mailClient.ToString() + @"\shell\open\command", "", "none");

y luego eliminar cualquier cosa extraña de la cadena de la línea de comandos que no es necesario (citas, parámetros).

Creo que debería ser capaz de encontrar esa información en el registro en HKLM\Software\Clients\Mail.

Busque el valor de cadena por defecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top