Either there is no default mail client or the current mail client cannot fulfill the message request…..

這一篇其實是想說一個故事,一個令人很討厭的Message box.

如果事情有這麼像表面的簡單,到Setting > System > Default apps裡面去把 Email改成Outlook這麼簡單的事情,我肯定不會寫成一篇文章。
P.S.先說一下這邊的系統是建立在Windows 10 X64 with Office 2013 X64。

我去谷哥大神查了好多的網站論壇,回答大都千篇一律。
1. 移除Office重新安裝
2. 刪除機碼”們”之後對Office做修復動作。
HKLM:\\Software\Clients\Mail\Microsoft Outlook
HKLM:\\SOFTWARE\Wow6432Node\Clients\Mail\Microsoft Outlook
HKLM:\\SOFTWARE\Microsoft\Office\15.0
….族繁不及備載….

反正怎麼做都沒用,只要Outlook一開他很快就會依直跑出來。
後來我突然發現,錯誤訊息跳出來的時候下面的圖示一定是放大鏡

這是Windows 索引服務的圖示,突然給我一點靈感。跑去Outlook的Index Option看看(其實Index Option是系統內建的,設定的是整個Windows的索引服務)

點Modify之後,怪了,為什麼有兩個Outlook?名字還不一樣。

我的直覺告訴我,應該取消其中一個有機會讓這個錯誤訊息消失,我會有這種感覺是因為之前這台電腦曾經裝過Office 2010 Stand X64。

但是我發現我只能把Microsoft Oulook取消掉不納入索引範圍,那個Microsoft Office Outlook永遠都在上面(上面圖因為已經修改過所以看起來是可以取消,本來其實是反灰的)

我看看了一下我的電腦(Windows 10 X64 with Office 2013 X64)跟他環境相同,但是我從來沒裝過Office 2010

我的只有Microsoft Outlook而已,所以我應該能斷定Microsoft Office Outlook應該是舊的Outlook留下來的。

我在谷哥的搜尋方向開始朝向如何移除Indexed Location來著手。
我跳過Index Rebuild,因為我覺得肯定沒用!
我直接嘗試重作整個Index File
1. 停止(Stop)並停用(Disable) Windows Search服務
2. 找到C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb
3. 改名或刪除
4. 啟動(Start)並啟用(AUTO-Start-Delay) Windows Search服務
(有可能第一次出現 失敗因為他找不到原來的Windows.edb,再按一次啟動即可)
然後他就會開始自動重作Windows索引。

然後結論還是沒用,只要Outlook打開依然跳出討厭的畫面。

後來我想了很久,Windows 的設定根本上都是寫在機碼裡,我去找找看他放在哪裡。這Location我真的找了一陣子才找到原來他是在這裡
HKLM:\\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\WorkingSetRules

但是這麼多項目看起來怎麼跟圖形介面的項目對不起來。
後來點進去機碼發現了事有蹊俏。裡面有的值URL上面記載的資料大部分都是路徑。

結果我看到了個眼熟的值
mapi15://{S-1-5-21-1715567821-1326574676-725345543-997407}/

mapi指的是郵件的通訊協定,而我在他的電腦發現了 一組mapi15開頭,另一組是mapi開頭的,我對照了一下我電腦的機碼,發現我的只有mapi15開頭的而已。
如此一來我應該可以斷定mapi開頭的應該就是舊版的Microsoft Office outlook。我抱著必死的決心,想說反正機碼備份出來,萬一壞掉在Import回去就好了。
最壞狀況頂多就是重灌而已。
右鍵選Delete…登愣…..不給刪!我想也是,如果有這麼簡單就好了

我來看看機碼的權限。連管理員都動不了它,只有TrustedInstall和WSearch這兩個服務帳號可以動它而已。

這太殘忍了,再繼續調整谷哥的搜尋方向,看看我要如何才能達成目標。

後來在某論壇找到有人把Index Location 弄亂掉想要重設回預測值,下面有人回答了,原來,需要用特殊技巧才有辦法

https://superuser.com/questions/707628/how-reset-indexing-locations-windows-8-1

這篇大致上說明了原因和做法,用正常的方式是沒有辦法更動裡面任何的機碼。
所以請按照下面的方式來做。

  1. Settings > Update & Security >Recovery > Advanced Startup > Restart now
  2. Troubleshoot > Advanced options > Command Prompt
  3. 出現命令視窗之後輸入regedit,將會打開機碼編輯視窗
  4. 你所看到的機碼,可能不是你原來系統的機碼而是Windows Recovery環境的。
  5. 左邊Panel 點選HKLM之後,右鍵Load Hive,去尋者原來電腦裡面的系統磁碟(Windows安裝磁碟),它有可能不是C,也許是D或是E。你可以利用命令提示字元視窗用dir或是機碼Load檔案的視窗去確認你原來的系統在哪裡。
  6. 我運氣很好Windows Recovery用的是X,所以我原來的系統就在C, 所以我點了HLKM右鍵Load Hive : C:\Windows\System32\Config\Software
  7. 它會談出一個視窗,給他一個名字(隨意看得懂就好),例如SOFTWARE_real,接著你就會看到機碼視窗再SOFTWARE下面多了一個SOFTWARE_real。
  8. 然後到這裡面,剛剛那個刪不掉的機碼就能夠刪掉了。
  9. 刪完關閉機碼視窗輸入Exit
  10. 回到Troubleshoot畫面選Exit and Continue to Windows。

回到正常Windows重新檢查Index Option > Modify > Indexed Location,雖然惱人的Microsoft Office Outlook還在,但是它的勾勾不見了,也就是他不會列入索引服務的範圍了。

然後測試Outlook打開之後,就沒有再跳出來了!

我想這大發現至少讓我免除浪費重灌的時間了!