2009-07-13 9 views
6

Utilizzando C#, come posso determinare quale programma è registrato come client e-mail predefinito? Non ho bisogno di avviare l'app, voglio solo sapere di cosa si tratta.Trova client e-mail predefinito

risposta

9

Utilizzare la classe del Registro di sistema per cercare nel Registro di sistema. Questa app per console dimostra il 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()); 
     } 
    } 
} 
+0

Il client e-mail predefinito è un criterio per utente. Sono d'accordo con la risposta di William Parke qui sotto. – JDennis

+0

Esiste comunque come avviare l'app? – Rich

8

Si può guardare nel Registro di sistema la seguente chiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail 
+2

+1 solo un po 'più veloce che io ... – Jonathan

3

Si può leggere questa chiave di registro da

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail 
1

penso che si dovrebbe essere in grado di trovare queste informazioni nel Registro di sistema HKLM\Software\Clients\Mail.

Cercare il valore di stringa predefinito.

3

Il client di posta elettronica predefinito dipende dall'utente. HKLM elenca tutti i client di posta elettronica registrati; il primo restituito potrebbe non essere l'impostazione predefinita dell'utente corrente. Meglio leggere HKEY_CURRENT_USER\Software\Clients\Mail.

Inoltre, questo fornisce solo il nome dell'applicazione di posta elettronica. Se si desidera che il nome del file eseguibile, si deve andare avanti con qualcosa di simile:

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

e quindi rimuovere qualsiasi cosa estranea dalla stringa della riga di comando che non è necessario (citazioni, parametri).