前情提要:企業 IE 保育指南

IE11 在去年 6/15 停止支援,除了 Windows 10 LTSC 版的 IE11 可以用到 2029,消費者版本 Windows 10 的 IE11 會逐步限縮使用。今年的 2/14 情人節是另一個坎,開啟 IE11 將自動跳轉 Edge,強迫改用 Edge IE Mode。

IE11 桌面版的各階段停用計劃以官方公告(又稱 IE11 生命簿)為準,時程如下:

  • 2023/2/14 透過 Edge 更新永久停用 IE11 桌面版,IE11 一啟動就會導向 Edge
  • 2023/5/23 透過 Windows 選擇性更新移除開始選單及工作列的 IE11 圖示
  • 2023/6/13 透過 Windows 安全更新(強制性)移除開始選單及工作列的 IE11 圖示

一般使用者用的 Windows 10 版本,基本上 IE 11 將依上述時程階段性退場。企業用戶的 Win8.1、Win7 ESU、Windows Sever SAC、Win10 IoT、Win 10 LTSC 及 Server LTSC 的 IE11 則不受影響,可以用到 2029。

我的主要工作環境已換成 Windows 11,平日也鮮少再用 IE,經提醒才發現 Windows 10 的 IE11 沒熬過今年的情人節。

為了驗證我在 Azure 建了一台 Windows 10 Pro 22H2 做測試,但狀況有點混亂,Edge 更新到最新版後,開 IE11 會彈出空白 Edge 畫面,開新頁籤也會,但 IE11 沒被強迫關閉,關掉 Edge 卻可以繼續用 IE11。(不知是否我出現的是空白 Edge 異常有關)

開啟 IE11 時被導向 Edge

(題外話:意外發現 Azure 的 Windows 10 VM 選項好多,各種 LSTC、LTSB 版本都有,要測特定版本 OS 倒是蠻方便的)

IE11 強制導向 Edge 行為屬官方刻意為之,未提供關閉選項,要避免等於要走上破解的路,我傾向繞道而行。

試了一下,之前在 Windows 11 啟動獨立 IE 應用程式使用的 Classic IE.exe,在 Windows 10 也適用,經實測可以順利開出 IE 獨立應用程式而不會驚動 Edge,雖然使用上跟 IE11 有些許差異,但也算是解法,提供大家參考。

Classic IE in Windows 10

註:Classic IE 是個迷你開源專案,使用 .NET 6 開發,有興趣的朋友可以參考這篇教學下載程式回去編譯,不需要有程式開發基礎花個三分鐘也能做出 EXE 自用。

【2023-02-22 補充】

如果還是想破解 IE 的強制導向,可使用 regedit 修改機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Ext\CLSID\1FD49718-1D00-4B19-AF5F-070AF6D5D54C 為 0

或將以下內容存成 disable-ie11-forward-edge.reg 點擊執行:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Ext\CLSID]
"{1FD49718-1D00-4B19-AF5F-070AF6D5D54C}"="0"

感謝讀者 Mau-Chiuan Chiu 補充分享。


Comments

# by leolee

雖然可以修改註冊表,但有些麻煩。有發現在IE捷徑後加上 -extoff 參數可停用BHO元件,但在此Classic IE.exe中不知道怎麼加入,是否能請教怎麼處理。

# by Jeffrey

to leolee,有個疑問,我測試 ClassicIE.exe 可以獨立開啟不會被導向,何以還需要停用 BHO 元件?

# by leolee

您好,在win10環境下測試,修改機碼或是改ie_to_edge_stub.exe(更名/刪除), 都會不定期被修正回來,此時就算使用自行編譯的ClassicIE.exe還是會自動跳EDGE。所以想找更單純的方式,從呼叫IE元件地方來修改。

# by Jeffrey

to leolee,我沒遇到不定期被修正回來或 Class IE.exe 也被導向的狀況,不知是否在特殊環境下才會發生。若問題點出在 Registry 不定期會被改掉,那麼在 Classic IE Program.cs 啟動 IE 前加段檢查,發現 Registry 被改了就再將其停用,是簡單粗暴但有效的解法。

# by liwei

您好,我想請問如何在 Classic IE Program.cs 增加啟動 IE 前加段檢查的方式或編碼, 可以在發現Registry 被改了後,再將其停用的方法呢?

# by liwei

因為現在使用 Classic IE 只要點開網頁(例如點開我的最愛內的網頁連結),就會被跳至Edge了,想請教是否有解法,謝謝大神

# by Jeffrey

to liwei, 點任何網頁都跳轉 Edge,還是發生在特定網頁?

# by liwei

to Jeffrey大 點任何我的最愛內的網頁都會跳轉Edge,謝謝您

# by liwei

to Jeffrey BHO元件會被重置為開啟,重新更改Registry,關閉BHO後,則可以使用

# by Neo

to liwei Edge的設定->預設瀏覽器->在 Microsoft Edge 中以 Internet Explorer 開啟網站->設定永不,試試有沒有用,不然就在Chrome上安裝IE Tab套件試試??

# by Jeffrey

to liwei, 我有重現我的最愛跳轉Edge,但測試與 IEToEdge BHO 是否停用無關,我想到的解法是做一個書籤頁 參考:https://blog.darkthread.net/blog/classic-ie-favorites-issue/

# by liwei

Jeffrey 大神,剛剛執行使用您的新增的方法後,在Windows 10 20H2 Edge版本 111.0.1661.51 下測試狀況如下: IEToEdge BHO為開啟狀態:執行ClassicIE,是正常顯示EI11畫面無誤,點選開新分頁,或是點選連結清單網頁的任一連結,都會導引至Edge,Edge瀏覽器設定內的預設瀏覽器 Internet Explorer 相容性 選項設定為:永不。 IEToEdge BHO為關閉狀態:執行ClassicIE,不論執行任何操作,均正常使用IE11模式,不會跳轉至Edge。 Jeffrey大,會是因為我用dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true 這種打包方式影響我與您的測試結果不同的嗎? 還是打包方式不受影響呢?

Post a comment