| 

.NET C# Java Javascript Exception

1
Hallo zusammen.

Ich möchte in meinem Programm das Standard-Mailprogramm ermitteln.

Dazu habe ich auch schon folgenden Link gefunden.

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?

Dank im Voraus.
29.08.2012
multi1209 848 1 8
3 Antworten
1
Hast Du ein 64-Bit Windows?

Falls ja werden Zugriffe auf HKEY_LOCAL_MACHINE\SOFTWARE bei einer 32-Bit Anwendung ("Any CPU") automatisch auf den Unterknoten "Wow6432Node" umgeleitet!

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072%28v=vs.85%29.aspx

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!
29.08.2012
erh 86 3
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.
multi1209 29.08.2012
ok, dann kann ich Dir leider nicht weiterhelfen.

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?
erh 29.08.2012
1
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
30.08.2012
Matthias Hlawatsch 13,2k 4 9
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.
multi1209 30.08.2012
0
For online computer technical support we are here and provide you help.
23.02.2017

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH