2010-10-15 60 views
6

爲了找出默認的電子郵件客戶端是什麼,我一遍又一遍地找到相同的信息:查看HKLM\Software\Clients\Mail中的默認字符串。 (例如,見這related question默認電子郵件客戶端在註冊表中如何以及在哪裏設置?

然而,這似乎不是適用於所有的操作系​​統和/或情況: 我運行Win7的64位兩臺機器,我們姑且稱之爲A和B. A有Outlook 2010的64位和雷鳥3 32bit安裝。 B安裝了Outlook 2007 32bit和Thunderbird 3 32bit。 A和B都將Thunderbird設置爲其默認郵件客戶端。

然而,註冊表的狀態並不如我預期的那樣:

在機器A,既HKLM\Software\Clients\MailHKLM\Software\Wow6432Node\Clients\Mail有一個空的字符串作爲默認字符串值。 在B上,這兩個鍵都包含Microsoft Outlook作爲默認字符串值,這顯然是錯誤的。 進一步調查顯示,兩臺機器上的正確值似乎都寫入HKCU\Software\Clients\Mail

我希望我的應用程序能夠正確處理所有情況。它有道理,Win7現在似乎爲每個用戶保留一個單獨的默認郵件客戶端,但看起來相當不一致。當查看指向HKLM\Software\Clients\Mail的大量信息時,看起來很明顯,以前版本的Windows處理這種情況的方式不同,並且始終寫入該位置。那麼這是什麼時候改變的?機器B上的錯誤值有什麼含義?如果沒有,爲什麼它首先寫在那裏?同一臺計算機上的64位和32位電子郵件客戶端的組合是否改變了?

如果有人會分享可靠的信息或解釋此主題的文檔,我將非常感激!也許有一個Win32 API函數返回正確的值?

+0

「Win7現在似乎爲每個用戶保存一個單獨的默認郵件客戶端」 - >是; 「以前版本的Windows處理這個不同」 - >是的,而我認爲它已經在Vista的情況下 – 2010-10-15 08:00:58

回答

9

此MSDN文章對您有幫助嗎?在註冊表子樹製成

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

註冊記憶有比對應於HKEY_LOCAL_MACHINE作出註冊控制檯用戶更高的優先級。對於系統上的新用戶,使用存儲在HKEY_LOCAL_MACHINE中的設置。

對於Windows XP專文:How to modify the default Web browser and e-mail client programmatically in Windows XPHow to implement a per-user default mail client in Windows XP?

對不起,幫不了你使用Win32 API。

+0

謝謝!你的第一個鏈接看起來和我一直在尋找的一樣,它適用於Win XP,Vista和7。 – Hatch 2010-10-15 08:34:56

1

對於Windows 10,這似乎是不同的 - 看到這裏的討論:https://superuser.com/q/1045349/176339

報價爲您的問題相關的段落,從papo的回答是:

註冊表項的mailto協議是下HKLM \ SOFTWARE \ Classes下\的mailto並且,因爲它是與其他類,他們可以通過條目CURRENT_USER覆蓋,下HKCU \ Software \ Classes下\郵寄地址 但是 最近的Windows版本發生了變化,現在在註冊表中還有更多地方會進一步覆蓋來自類的shell關聯。此外,在mailto的情況下,它們是強制性的,因此將mail的Classes值渲染爲無用的。 接下來的重要性行是關鍵: [HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Explorer中\ FileExts \郵寄地址] 而這又是通過覆蓋: [HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \漫遊\ OpenWith \ UrlAssociations \郵寄地址] 它,如果它沒有被覆蓋,也只用: [HKEY_CURRENT_USER \ SOFTWARE \微軟\的Windows \殼牌\協會\ UrlAssociations \郵寄地址]

GOOD JOB微軟:) 值在這些密鑰下具有相同的格式,具有P的關鍵用戶選擇rogId valuename指向來自類的shell關聯鍵。 但是你幾乎可以忘記編輯這些值,因爲還有哈希值。這是針對此類註冊表編輯的保護。 用戶必須至少點擊一次,才能在標準的Windows Open With對話框彈出窗口中選擇一個應用程序,如果他還檢查Always選項,則會生成Hash值,並將選項記住並寫入上面列表中的最後兩個Keys。另一種選擇是使用上圖中顯示的設置。 這是防範惡意應用程序,病毒和惡意程序應用程序的安全措施。

要解決默認的mailto關聯問題,您可以從LOCAL_MACHINE以外的所有這些位置刪除mailto Keys。 Windows將在下次使用mailto協議時重新創建它們。

相關問題