VB.net
WebBrowser IE 버전 매칭
by 호야호잇
2021. 7. 23.
Public Function GetEmbVersion() As Integer
Dim ieVer As Integer = GetBrowserVersion()
If ieVer > 9 Then Return ieVer * 1000 + 1 'IE 10/11 이상
If ieVer > 7 Then Return ieVer * 1111 'IE 8/9
End Function
Public Sub FixBrowserVersion()
Dim appName As String = System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().Location)
FixBrowserVersion(appName)
FixBrowserVersion("devenv") '개발자용 전용
End Sub
Public Sub FixBrowserVersion(ByVal appName As String)
FixBrowserVersion(appName, GetEmbVersion())
End Sub
Public Sub FixBrowserVersion(ByVal appName As String, ByVal ieVer As Integer)
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName & ".exe", ieVer)
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName & ".exe", ieVer)
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName & ".vshost.exe", ieVer)
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName & ".vshost.exe", ieVer)
End Sub
Private Sub FixBrowserVersion_Internal(ByVal root As String, ByVal appName As String, ByVal ieVer As Integer)
Try
If Environment.Is64BitOperatingSystem Then
Microsoft.Win32.Registry.SetValue(root & "\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appName, ieVer)
Else
Microsoft.Win32.Registry.SetValue(root & "\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", appName, ieVer)
End If
Catch __unusedException1__ As Exception
End Try
End Sub
Public Function GetBrowserVersion() As Integer
Dim strKeyPath As String = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer"
Dim ls As String() = New String() {"svcVersion", "svcUpdateVersion", "Version", "W2kVersion"}
Dim maxVer As Integer = 0
For i As Integer = 0 To ls.Length - 1
Dim objVal As Object = Microsoft.Win32.Registry.GetValue(strKeyPath, ls(i), "0")
Dim strVal As String = System.Convert.ToString(objVal)
If strVal IsNot Nothing Then
Dim iPos As Integer = strVal.IndexOf("."c)
If iPos > 0 Then strVal = strVal.Substring(0, iPos)
Dim res As Integer = 0
If Integer.TryParse(strVal, res) Then maxVer = Math.Max(maxVer, res)
End If
Next
Return maxVer
End Function