WebBrowserコントロール IE11化 自動レジストリ登録
VBでWebBrowserコントロールをよく使うのですが、IE7エンジンが自動で使われてしまいます。今時IE7ではレタリングなど多々問題がありますのでIE11化してみようと思います。
機能 管理者起動時、自動REG登録
WebBrowserCtrl IE11化するにはレジストリに書き込みの必要があります。管理者権限で起動した時、自動でレジストリに書込するプログラムを書いてみようとおもいます。まずはVBデザインにてWbCtrlを2つボタンを1つ配置します。
class1を追加
元ネタ SpcialThanksImports Microsoft.Win32 Class SurroundingClass Public Shared Sub createRegistry() Dim filename As String = Process.GetCurrentProcess().MainModule.FileName filename = filename.Substring(filename.LastIndexOf("\"c) + 1, filename.Length - filename.LastIndexOf("\"c) - 1) If filename.Contains("vhost") Then filename = filename.Substring(0, filename.IndexOf("."c) + 1) & "exe" Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", True).SetValue(filename, 11001, RegistryValueKind.DWord) Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS", True).SetValue(filename, 11001, RegistryValueKind.DWord) Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", True).SetValue(filename, 11001, RegistryValueKind.DWord) Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS", True).SetValue(filename, 11001, RegistryValueKind.DWord) End Sub Public Shared Sub removeRegistry() Dim filename As String = Process.GetCurrentProcess().MainModule.FileName filename = filename.Substring(filename.LastIndexOf("\"c) + 1, filename.Length - filename.LastIndexOf("\"c) - 1) If filename.Contains("vhost") Then filename = filename.Substring(0, filename.IndexOf("."c) + 1) & "exe" Try Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", True).DeleteValue(filename) Catch End Try Try Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS", True).DeleteValue(filename) Catch End Try Try Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", True).DeleteValue(filename) Catch End Try Try Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS", True).DeleteValue(filename) Catch End Try End Sub End Class
デザインのコード
Imports System.DirectoryServices.AccountManagement Public Class Form1 Private myURLleft As Uri Private myURLright As Uri Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim adm As Boolean adm = IsAdministrator() '管理者で起動しているならWebbrowserIE11モードをregに登録 If adm = True Then SurroundingClass.createRegistry() Dim cReg As New SurroundingClass() cReg.createRegistry() cReg = Nothing End If WebBrowser1.ScriptErrorsSuppressed = True myURLleft = New System.Uri("https://www.ugtop.com/spill.shtml") WebBrowser1.Navigate(myURLleft) WebBrowser2.ScriptErrorsSuppressed = True myURLright = New System.Uri("https://www.tcoop.or.jp/efriends/browsercheck.html") WebBrowser2.Navigate(myURLright) End Sub 'アドミンで起動しているか判定 Private Function IsAdministrator() As Boolean Dim identity = System.Security.Principal.WindowsIdentity.GetCurrent Dim principal = New System.Security.Principal.WindowsPrincipal(identity) Return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) End Function '読込後なんかする。 Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted End Sub End Class
初回起動時に管理者権限で起動し自動でレジストリに追記、次回からは通常起動でもIE11エンジンが使われます。またVB2017デバッグ時でもVB2017を管理者権限で起動すればデバッグ先もokみたいです。
Uninstall時は
元ネタのほうではレジストリのリムーブがついてますが、ソフトにリムーブ機能がついているのもちょっと妙ですのでUninstall.regをつくります。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "プロジェクト名.exe"=- [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS] "プロジェクト名.exe"=- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "プロジェクト名.exe"=- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS] "プロジェクト名.exe"=-
※プロジェクト名を適宜かきかえてください。