設定 WebBrowser 控制項在執行階段模擬的 IE(Internet Explorer) 版本

Microsoft Virtual Studio 中的 WebBrowser 在使用上有蠻多的應用方式

然而有時候開啟某些網站時,卻會提示更換使用較新瀏覽器版本
即使已將 IE 更新的提示較新的版本,透過 WebBrowser 開啟依舊還是跳出提示,這點還真是讓人有點困擾

WebBrowser控制項 在執行階段中預設套用的IE版本,是系統上的註冊機碼定義的
這個註冊機碼的預設值會受到 安裝的系統、IE版本 和 .NET Framework 版本 所影響

環境是: Windows 7 x64 安裝 IE 11 及 .NET Framework 4.7
先來看一下註冊機碼

 

從範例的圖片可以看出來,透過應用程式的檔案名稱可以各別指定所需要使用的IE版本
沒有特別定義應該就會使用預設值
設定值可以參考下表官方的說明,或到官方查詢最新的說明:Browser Emulation

Value Description
11001 (0x2AF9) Internet Explorer 11. Webpages are displayed in IE11 edge mode, regardless of the?declared !DOCTYPE directive. Failing to?declare a !DOCTYPE directive?causes the page to load in Quirks.
11000 (0x2AF8) IE11. Webpages containing standards-based?!DOCTYPE directives?are displayed in IE11 edge mode. Default value for IE11.
10001 (0x2711) Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the?!DOCTYPE directive.
10000 (0x02710) Internet Explorer 10. Webpages containing standards-based?!DOCTYPE directivesare displayed in IE10 Standards mode. Default value for Internet Explorer 10.
9999 (0x270F) Windows Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the?declared !DOCTYPE directive. Failing to?declare a !DOCTYPE directive?causes the page to load in Quirks.
9000 (0x2328) Internet Explorer 9. Webpages containing standards-based?!DOCTYPE directivesare displayed in IE9 mode. Default value for Internet Explorer 9.

Important?In Internet Explorer 10, Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
8888 (0x22B8) Webpages are displayed in IE8 Standards mode, regardless of the?declared !DOCTYPE directive. Failing to?declare a !DOCTYPE directive?causes the page to load in Quirks.
8000 (0x1F40) Webpages containing standards-based?!DOCTYPE directives?are displayed in IE8 mode. Default value for Internet Explorer 8

Important?In Internet Explorer 10, Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode.
7000 (0x1B58) Webpages containing standards-based?!DOCTYPE directives?are displayed in IE7 Standards mode. Default value for applications hosting the?WebBrowser Control.

 

知道如何設定模擬的IE版本,就可以解決遇到IE版本太低的問題
方法不外乎就是

  • 手動修改註冊機碼,或以 登錄項目檔案(reg副檔名) 來新增設定值
  • 程式自動處理註冊機碼

使用程式自動設定的話,有兩個選擇:

  • HKEY_LOCAL_MACHINE
    整個系統的所有使用者都套用,但程式本身要有 系統管理者權限 才能有寫入權限
    一是使用按右鍵「以系統管理員身份啟動」,另一方式是在 app.manifest 設定 requestedExecutionLevel 的 level=requireAdministrator
    或是作業系統停用 UAC (使用者帳戶控制)
  • HKEY_CURRENT_USER
    只套用目前登入的使用者,一般使用者權限即可完成
    不用處理任何權限的問題,即使沒有停用 UAC 一樣可以動作

以下的是 VB.NET 的範例,註冊機碼則是寫入到 HKEY_CURRENT_USER

 

在 啟動表單 中加入以上的程式碼,程式啟動時候就會自動去寫入註冊機碼
程式在執行階段就可以讓 WebBrowser 以指定的 IE 版本模式運作