2

C#を使用してデフォルトのメールクライアントを見つける方法は?ここに投稿されたものをチェックしましたが、役に立ちませんでした。

このコードを使用しました

object mailClient = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail", "", "none");

私のコンピューターでは、Windows LiveメールとOutlookの両方がインストールされており、defualtクライアントはWindows Liveメールですが、mailclientを印刷すると、defualtメールクライアントがOutlookとして表示されます。

しかし、私が使用する場合System.Diagnostics.Process.Start("mailto:")、それは正しいウィンドウズライブメールで開きます。

C#コードを介してdefualtクライアントを見つける方法が必要です.....

4

2 に答える 2

3

レジストリキーは次のとおりです。

マシーン:
HKEY_CLASSES_ROOT\mailto\shell\open\command

ユーザー:
HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command

これらのキーの値は実行されるコマンドラインであり、。%1の後にアドレスのaが含まれていますmailto:。そのため、実行可能ファイルへのパスだけを取得するには、おそらく追加の解析を行う必要があります。

例:
"C:\PROGRA~2\MICROS~4\Office14\OUTLOOK.EXE" -c IPM.Note /m "%1"になる必要があり"C:\PROGRA~2\MICROS~4\Office14\OUTLOOK.EXE"ます。

于 2013-03-13T18:33:13.673 に答える
0

「宛先」がすでに入力されているメッセージを開くには、

string target = "joe.doe@doecontry.dc";

string mailtoCommand =
    (string) Registry.GetValue(@"HKEY_CURRENT_USER\Software\Classes\mailto\shell\open\command", @"", @"none");
mailtoCommand = mailtoCommand.Replace("\"", string.Empty).Replace("%1", target);

string arguments =
    mailtoCommand.Substring(mailtoCommand.ToLower().IndexOf(@".exe", StringComparison.Ordinal) + 4);

string fileName = mailtoCommand.Substring(0, mailtoCommand.Length - arguments.Length);

Process.Start(fileName, arguments);
于 2016-05-10T15:18:12.637 に答える