Imports System.Runtime.InteropServices
Public Class WebBrowserUpdater
Shared is64BitProcess As Boolean = (IntPtr.Size = 8)
Shared is64BitOperatingSystem As Boolean = is64BitProcess OrElse InternalCheckIsWow64()
<DllImport("kernel32.dll")> _
Private Shared Function IsWow64Process(<[In]()> ByVal hProcess As IntPtr, <Out()> ByRef wow64Process As Boolean) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Public Shared Function InternalCheckIsWow64() As Boolean
If (Environment.OSVersion.Version.Major = 5 AndAlso Environment.OSVersion.Version.Minor >= 1) OrElse Environment.OSVersion.Version.Major >= 6 Then
Using p As Process = Process.GetCurrentProcess()
Dim retVal As Boolean
If Not IsWow64Process(p.Handle, retVal) Then
Return False
End If
Return retVal
End Using
Else
Return False
End If
End Function
Public Shared Function GetEmbVersion() As Integer
Dim ieVer As Integer = GetBrowserVersion()
If ieVer > 9 Then
Return ieVer * 1000 + 1
End If
If ieVer > 7 Then
Return ieVer * 1111
End If
Return 7000
End Function
' End Function GetEmbVersion
Public Shared Sub FixBrowserVersion()
Dim appName As String = System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().Location)
FixBrowserVersion(appName)
End Sub
Public Shared Sub FixBrowserVersion(ByVal appName As String)
FixBrowserVersion(appName, GetEmbVersion())
End Sub
' End Sub FixBrowserVersion
Public Shared Sub FixBrowserVersion(ByVal appName As String, ByVal ieVer As Integer)
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName & Convert.ToString(".exe"), ieVer)
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName & Convert.ToString(".exe"), ieVer)
FixBrowserVersion_Internal("HKEY_LOCAL_MACHINE", appName & Convert.ToString(".vshost.exe"), ieVer)
FixBrowserVersion_Internal("HKEY_CURRENT_USER", appName & Convert.ToString(".vshost.exe"), ieVer)
End Sub
' End Sub FixBrowserVersion
Private Shared Sub FixBrowserVersion_Internal(ByVal root As String, ByVal appName As String, ByVal ieVer As Integer)
Try
'For 64 bit Machine
If InternalCheckIsWow64() Then
Microsoft.Win32.Registry.SetValue(root & Convert.ToString("\Software\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"), appName, ieVer)
Else
'For 32 bit Machine
Microsoft.Win32.Registry.SetValue(root & Convert.ToString("\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"), appName, ieVer)
End If
Catch generatedExceptionName As Exception
MessageBox.Show("You have to be administrator to run start this process. Please close the software. Right click on the iGiftCard icon and select RUN AS ADMINISTRATOR .", "Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
End Try
End Sub
' End Sub FixBrowserVersion_Internal
Public Shared 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)
End If
Dim res As Integer = 0
If Integer.TryParse(strVal, res) Then
maxVer = Math.Max(maxVer, res)
End If
End If
Next
Return maxVer
End Function
' End Function GetBrowserVersion
End Class