WebBrowserで使用されるバージョンのデフォルトはIE7なので、インストールされている最新のバージョンに変更したくなることはよくあるとおもう。ただその変更はレジストリを使用する以外に方法はありません。
インストールされたIEのバージョンを取得
IEをどのバージョンに変更するかを決定するためにはインストールされているIEのバージョンを知る必要があります。
private int IEVersion
{
get {
var r = new Regex(@"(\d{1,2})\.(\d{1,2})\.[\d]+.[\d]+");
var m = r.Match(Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Internet Explorer").GetValue("Version").ToString());
var ver1 = Convert.ToInt32(m.Groups[1].Value);
var ver2 = Convert.ToInt32(m.Groups[2].Value);
if (ver1 == 9 && ver2 > 9)
{
return ver2;
}
return ver1;
}
}
IE10以上のとき、バージョンによってはちょっと形式が違うことがあるようなので、その処理を追加しています。
レジストリを書き換える
WebBrowserがインストールされている最新のIEを使用するようにレジストリを書き換えます。
public const string FEATURE_BROWSER_EMULATION = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(FEATURE_BROWSER_EMULATION);
String exeName = System.IO.Path.GetFileName(Assembly.GetExecutingAssembly().Location);
int IeVer = this.IEVersion;
regkey.SetValue(exeName, IeVer * 1000, Microsoft.Win32.RegistryValueKind.DWord);
regkey.Close();
レジストリの削除にはDeleteSubKey
を使うだけです。
regkey.DeleteSubKey(exeName, false);
regkey.Close();
設定の反映には当然ソフトの再起動が必要。