2010-10-15 4 views
6

Um herauszufinden, was der Standard-E-Mail-Client ist, fand ich die gleichen Informationen immer wieder: Schauen Sie sich die Standardzeichenfolge in HKLM\Software\Clients\Mail. (Siehe zum Beispiel das related question)Wie und wo wird der Standard-E-Mail-Client in der Registrierung festgelegt?

Allerdings scheint dies der Fall zu sein, nicht für alle Betriebssysteme und/oder Situationen: Ich habe zwei Maschinen Win7 64bit laufen, nennen wir sie A und B. A hat Outlook 2010 64-Bit und Thunderbird 3 32bit installiert. B hat Outlook 2007 32bit und Thunderbird 3 32bit installiert. Sowohl A als auch B haben Thunderbird als Standard-E-Mail-Client festgelegt.

Allerdings ist der Zustand der Registrierung nicht, wie ich es erwartet:

auf der Maschine, die beide HKLM\Software\Clients\Mail und HKLM\Software\Wow6432Node\Clients\Mail hat eine leere Zeichenfolge als Standard-String-Wert. In B enthalten beide Schlüssel Microsoft Outlook als Standardzeichenfolgenwert, was eindeutig falsch ist. Weitere Untersuchungen ergaben, dass der korrekte Wert auf beiden Maschinen auf HKCU\Software\Clients\Mail geschrieben zu sein scheint.

Ich möchte, dass meine Anwendung dies in allen Fällen korrekt behandelt. Es macht irgendwie Sinn, dass Win7 jetzt einen separaten Standard-Mail-Client für jeden Benutzer enthält, aber es scheint ziemlich inkonsistent zu sein. Wenn man sich die Fülle von Informationen ansieht, die auf HKLM\Software\Clients\Mail zeigen, scheint es offensichtlich, dass frühere Versionen von Windows dies anders gehandhabt haben und immer an diesen Ort geschrieben haben. Wann hat sich das geändert? Hat der falsche Wert für Maschine B eine Bedeutung? Wenn nicht, warum wird es dort überhaupt geschrieben? Ändert der Mix aus 64-Bit- und 32-Bit-E-Mail-Clients auf dem gleichen Computer irgendetwas?

Ich würde am meisten schätzen, wenn jemand zuverlässige Informationen oder Dokumentationen teilt, die dieses Thema erklären! Vielleicht gibt es eine Win32-API-Funktion, die den richtigen Wert zurückgibt?

+0

"Win7 scheint jetzt einen separaten Standard-Mail-Client für jeden Benutzer zu halten" -> ja; "Vorherige Versionen von Windows behandelt dies anders" -> ja, während ich denke, es war schon der Fall in Vista –

Antwort

9

Hilft Ihnen dieser MSDN-Artikel?

How to Register an Internet Browser or E-mail Client With the Windows Start Menu

in der Teilstruktur HKEY_CURRENT_USER gemacht Anmeldungen haben eine höhere Priorität für die Benutzerkonsole als Registrierungen in der HKEY_LOCAL_MACHINE entspricht. Für neue Benutzer auf dem System werden die in HKEY_LOCAL_MACHINE gespeicherten Einstellungen verwendet.

Für Windows XP ein spezieller Artikel: How to modify the default Web browser and e-mail client programmatically in Windows XP und How to implement a per-user default mail client in Windows XP?

Leider können Ihnen nicht mit dem Win32-API helfen.

+0

Vielen Dank! Ihr erster Link sieht genau so aus, wie ich ihn gesucht habe und er gilt für Win XP, Vista und 7. – Hatch

1

Für 10 Fenster scheint dies anders zu sein - siehe die Diskussion hier: https://superuser.com/q/1045349/176339

den entsprechenden Absatz für Ihre Frage, von papo ‚s Antwort Zitiert:

Registrierungseinträge für Mailto-Protokoll sind unter HKLM \ SOFTWARE \ Classes \ mailto und wie es mit anderen Klassen ist, könnten sie durch Einträge für CURRENT_USER außer Kraft gesetzt werden, unter HKCU \ SOFTWARE \ Classes \ mailto ABER Es gab Änderungen in den letzten Windows-Versionen und jetzt gibt es mehr Stellen in der Registrierung, die Shell-Zuordnungen von Klassen weiter überschreiben werden. Darüber hinaus sind sie im Fall von mailto obligatorisch und machen so die Klassenwerte für mailto nutzlos. Next in line von Bedeutung ist der Schlüssel: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Explorer \ FileExts \ mailto] die wiederum durch außer Kraft gesetzt wird: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Roaming \ Openwith \ UrlAssociations \ mailto] die auch nur dann verwendet wird, wenn sie von nicht außer Kraft gesetzt ist: [HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ Shell \ Verbände \ UrlAssociations \ mailto]

GOOD JOB Microsoft :) Werte unter diesen Keys haben das gleiche Format, eine Key UserChoice mit einem P rogId Wertname, der auf Shell-Assoziationsschlüssel aus Klassen verweist. Aber Sie können diese Werte fast vergessen, da auch der Hash-Wert vorhanden ist. Es ist ein Schutz gegen solche Registrierungsänderungen. Der Benutzer MUSS mindestens einmal auf sich selbst klicken, um eine App in einem Standarddialogfeld von Windows Öffnen mit auszuwählen, wenn er auch die Option Immer aktiviert, wird der Hashwert generiert und die Auswahl wird gespeichert und auf die letzten beiden Schlüssel aus der obigen Liste geschrieben. Eine andere Möglichkeit ist die Verwendung der Einstellungen wie im Bild oben gezeigt. Es ist ein Schutz vor bösartigen Apps, Viren und schlecht programmierten Apps.

Um ein Problem mit der Standard-Mailto-Zuordnung zu beheben, können Sie mailto Keys von allen diesen Speicherorten außer LOCAL_MACHINE löschen. Windows wird sie bei der nächsten Verwendung des mailto-Protokolls neu erstellen.

Verwandte Themen