Leider scheint das nicht richtig zu funktionieren. Auf meinem Testsystem ist Thunderbird als Stanndardprogramm für E-Mails aktiv, aber in der Registry steht an dieser Stelle "Outlook Express". Ich habe mal einen mailTo Link ausgeführt und es wird Thunderbird ausgeführt und nicht Outlook Express, d.h. das Standard E-Mailprogramm muss wohl wo anders definiert sein.
Weiß jemand wo?
Als Workaround werte ich zurzeit folgenden Registry-Key aus.
HKEY_CLASSES_ROOT\mailto\Shell\open\command
Ich prüfe, ob Outlook oder Thunderbird in dem String vorhanden ist, aber das kann ja nicht die endgültige Lösung sein, zumal es ja noch beliebig viele andere Clients gibt.
Weiß jemand wie man den Standard E-Mailclient zuverlässig ermitteln kann?
Falls ja werden Zugriffe auf HKEY_LOCAL_MACHINE\SOFTWARE bei einer 32-Bit Anwendung ("Any CPU") automatisch auf den Unterknoten "Wow6432Node" umgeleitet!
Wenn dein Mailclient eine 32-Bit Anwendung ist, musst Du in HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Clients\Mail nachschauen, wenn es eine 64-Bit Anwendung ist hier: HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail
Bei mir (Win7 x64, Outlook 2007) stehen z.B. unter den beiden Schlüsseln die identischen Einträge.
Du musst natürlich auch noch beachten, ob deine Applikation als 32-Bit oder 64-Bit ausgeführt wird (Konfiguration "Any CPU" vs. "x86" in den Projekteinstellungen). Als 32 Bit Anwendung werden alle Registry-Anfragen automatisch auf "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\..." umgeleitet!
Danke für deine Antwort, aber die Tests liefen in einer VM mit Windows XP 32bit. Meine Anwendung wird ebenfalls als "x86" kompiliert. Somit bin ich sicher, dass ich die richtigen Registry-Keys ausgelesen habe.
Evtl. könntest Du mal den Standard E-Mail-Client ändern (Internetoptionen oder Systemsteuerung|Programme) und gleichzeigt mit RegMon von SysInternals.com die schreibenden Registry-Zugriffe mitprotokollieren?
Hm, sieht so aus, als wären Deine Registry-Settings inkonsistent (möglicherweise absichtlich). Wenn ich mir diese Seite hier anschaue, dann betrifft die "Default Mail Client"-Einstellung nicht nur mailto-Links, sondern z.B. auch MAPI-Calls. Wenn man diese Einstellung über die IE-Settings ändert, dann werden beide Registry-Einträge geschrieben. Es ist aber möglich, den mailto-Protokoll-Handler umzubiegen, ohne den systemweiten E-Mail-Default-Client zu ändern, und das scheint auf Deinem System der Fall zu sein.
Du müßtest also entweder beide Registry-Stellen auswerten und im Fall einer Differenz Dir eine für Dich passende Entscheidungslogik ausdenken, oder Du schaust tatsächlich nur auf den mailto-Handler an der von Dir angegebenen Stelle bzw. user-spezifisch unter HKEY_CURRENT_USER\SOFTWARE\CLASSES\mailto\shell\open\command
genau hier liegt das Problem. MailTo-Links werden mit dem Standardprogramm (Thunderbird) geöffnet, MAPI-Aufrufe aber weiterhin mit Outlook Express. Ich werde deinen Vorschlag mit dem Abfragen von beiden Registry-Stellen mal umsetzen.