C#webbrowserリファレンスのIEバージョンの設定

2127 ワード

今日WebBrowser Control素子のテストをしてみると、IE 9は私が書いたWebSocketプログラムを実行できないことがわかりました.そのため、HTML 5の支援程度を少しテストしてみると、IEで開くと138の点数を出すことができますが、WebBrowser Controlでは41点しか出せません.
 
Aaron大神の開示を経て、これは実際にIEを直接使うのとWebBrowser Controlを使って運行するのとは異なるUser Agentのためであることが分かった.こちらの筆者のIEのように走っているのはIE 9ですが、WebBrowser Controlが走っているのはIE 7です.
 
WebBrowser ControlのUser Agent設定を調整しなければなりません.IEのFeatureログイン情報を修正することで、この効果を達成することができます.コードの位置は以下の通りです.1 32 bit: 2 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION 3
  4 64 bit: 5 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
 
このコードの下にアプリケーションと同じ名前のDword Keyが追加され、設定された値はインターネットFeature Control(B.C)という文章を参照することができ、異なる値は異なるバージョンのUser Agentに対応する.
 
筆者がWindowsFormApplication 3という名前を付けたいようです.exeのアプリケーション指定はIE 9のUser Agentで動作し、以下のように設定できます.
 
手動で修正するだけでなく、プログラムを通じて、次のように書くこともできます.
  1 ... 2 public   Form1() 3 { 4      var appName = Process.GetCurrentProcess().MainModule.ModuleName; 5      Registry.SetValue( @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION" , appName, 9999, RegistryValueKind.DWord); 6      InitializeComponent();  7 } 8 ...
 
設定後に実行すると、既にIE 9のUser Agentを使用して実行していることがわかります.
 
HTML 5の支援度を再テストし、41点から137点に点数を上げ、直接IEで開くのとは差がない.
Link
  • Web Browser Control – Specifying the IE Version
  • Internet Feature Controls (B..C)
  • More IE8 Extensibility Improvements
  • C#ウィンドウプログラム:新しいブラウザコントロールをどのように使用しますか?
  • C# Web Browser component is IE7 not IE8? How to change this?