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
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());
}
}
}
Si può guardare nel Registro di sistema la seguente chiave:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
+1 solo un po 'più veloce che io ... – Jonathan
Si può leggere questa chiave di registro da
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
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.
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).
Il client e-mail predefinito è un criterio per utente. Sono d'accordo con la risposta di William Parke qui sotto. – JDennis
Esiste comunque come avviare l'app? – Rich