使用 google 地图时出现 C# 版 Web 浏览器警告 - Windows 7 和 Internet Explorer 8
C# version of web browser warning when using google map - Windows 7 and Internet Explorer 8
我正在使用 VS 2013 和 C# 网络浏览器控件,但是当我 运行 我的 .exe 文件在 Windows 8 及更早版本(例如 Windows 7, 安装了 Internet Explorer 8) 然后打开 https://maps.google.com 页面说 "Your Browser is Old Please Update it".
我已经用三种方法更改了注册表设置,但没有用。
第一个代码及其link:
Link: Use latest version of Internet Explorer in the webbrowser control
private void SetIE11KeyforWebBrowserControl()
{
var appName = Process.GetCurrentProcess().ProcessName + ".exe";
RegistryKey Regkey = null;
try
{
// For 64 bit machine
if (Environment.Is64BitOperatingSystem)
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@ "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EM ULATION", true);
else //For 32 bit machine
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@ "SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EM ULATION", true);
// If the path is not correct or
// if the user haven't priviledges to access the registry
if (Regkey == null)
{
if (Environment.Is64BitOperatingSystem)
Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey (@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EM ULATION");
else //For 32 bit machine
Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey (@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EM ULATION");
}
string FindAppkey = Convert.ToString(Regkey.GetValue(appName));
// Check if key is already present
if (FindAppkey == "11000")
{
Regkey.Close();
//MessageBox.Show("Application set IE Key value");
return;
}
else
{
Regkey.SetValue(appName, unchecked((int)0x2AF8), RegistryValueKind.DWord);
}
// Check for the key after adding
FindAppkey = Convert.ToString(Regkey.GetValue(appName));
if (FindAppkey != "11000")
throw new Exception("Can not set IE key for web browser");
else
{
Regkey.Close();
//MessageBox.Show("Application set IE Key value");
}
}
catch (Exception ex)
{
MessageBox.Show("Application Settings Failed\n" + ex.Message);
}
finally
{
// Close the Registry
if (Regkey != null)
Regkey.Close();
}
第二个密码:
public class Helper
{
public static void SetBrowserEmulation(
string programName, IE browserVersion)
{
if (string.IsNullOrEmpty(programName))
{
programName = AppDomain.CurrentDomain.FriendlyName;
RegistryKey regKey = Registry.CurrentUser.OpenSubKey(
"Software\Microsoft\Internet Explorer\Main" +
"\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (regKey != null)
{
try
{
regKey.SetValue(programName, browserVersion,
RegistryValueKind.DWord);
}
catch (Exception ex)
{
throw new Exception("Error writing to the registry", ex);
}
}
else
{
try
{
regKey = Registry.CurrentUser.OpenSubKey("Software" +
"\Microsoft\Internet Explorer\Main" +
"\FeatureControl", true);
regKey.CreateSubKey("FEATURE_BROWSER_EMULATION");
regKey.SetValue(programName, browserVersion,
RegistryValueKind.DWord);
}
catch (Exception ex)
{
throw new Exception("Error accessing the registry", ex);
}
}
}
}
}
public enum IE
{
IE7 = 7000,
IE8 = 8000,
IE8StandardsMode = 8888,
IE9 = 9000,
IE9StandardsMode = 9999,
IE10 = 10000,
IE10StandardsMode = 10001
}
它的第三个和link:
Link:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
"YourApplicationFileName.exe"=dword:00002af9
"YourApplicationFileName.vshost.exe"=dword:00002af9
更新 1:
我正在使用默认的 C# Web 浏览器控件(基于 IE)并且 http://whatsmybrowser.org 说:您的浏览器是 "Internet Explorer 8 on Windows 7"
更新 2:
当我在 Windows 7 上安装 IE 11 时,我的 .exe 文件工作正常,但我想使用代码更改设置,而不是安装 IE11。
在阅读 the link you provided 时,要理解的关键是它不会为您提供最新版本的 IE(即 IE 11) - 它为您提供最新版本的 IE 安装在您的机器上.
您的机器安装了 IE 8。由于 C# Web 浏览器控件使用的 IE 版本与您的计算机安装的版本相同,因此您的 C# 应用程序使用的是 IE 8。
很遗憾,Google地图不再支持 IE 8。
因此,您有三组选项:
- 在机器上升级 IE(例如升级到 IE 11)。
- 在机器上升级 OS(例如升级到 Windows 10)- 因为这会自动为您升级 IE。
- 使用使用 IE 以外的东西进行呈现的控件(网页浏览器控件除外)。我不知道有什么好处
质量选项。
我正在使用 VS 2013 和 C# 网络浏览器控件,但是当我 运行 我的 .exe 文件在 Windows 8 及更早版本(例如 Windows 7, 安装了 Internet Explorer 8) 然后打开 https://maps.google.com 页面说 "Your Browser is Old Please Update it".
我已经用三种方法更改了注册表设置,但没有用。
第一个代码及其link:
Link: Use latest version of Internet Explorer in the webbrowser control
private void SetIE11KeyforWebBrowserControl()
{
var appName = Process.GetCurrentProcess().ProcessName + ".exe";
RegistryKey Regkey = null;
try
{
// For 64 bit machine
if (Environment.Is64BitOperatingSystem)
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@ "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EM ULATION", true);
else //For 32 bit machine
Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@ "SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EM ULATION", true);
// If the path is not correct or
// if the user haven't priviledges to access the registry
if (Regkey == null)
{
if (Environment.Is64BitOperatingSystem)
Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey (@"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EM ULATION");
else //For 32 bit machine
Regkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey (@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EM ULATION");
}
string FindAppkey = Convert.ToString(Regkey.GetValue(appName));
// Check if key is already present
if (FindAppkey == "11000")
{
Regkey.Close();
//MessageBox.Show("Application set IE Key value");
return;
}
else
{
Regkey.SetValue(appName, unchecked((int)0x2AF8), RegistryValueKind.DWord);
}
// Check for the key after adding
FindAppkey = Convert.ToString(Regkey.GetValue(appName));
if (FindAppkey != "11000")
throw new Exception("Can not set IE key for web browser");
else
{
Regkey.Close();
//MessageBox.Show("Application set IE Key value");
}
}
catch (Exception ex)
{
MessageBox.Show("Application Settings Failed\n" + ex.Message);
}
finally
{
// Close the Registry
if (Regkey != null)
Regkey.Close();
}
第二个密码:
public class Helper
{
public static void SetBrowserEmulation(
string programName, IE browserVersion)
{
if (string.IsNullOrEmpty(programName))
{
programName = AppDomain.CurrentDomain.FriendlyName;
RegistryKey regKey = Registry.CurrentUser.OpenSubKey(
"Software\Microsoft\Internet Explorer\Main" +
"\FeatureControl\FEATURE_BROWSER_EMULATION", true);
if (regKey != null)
{
try
{
regKey.SetValue(programName, browserVersion,
RegistryValueKind.DWord);
}
catch (Exception ex)
{
throw new Exception("Error writing to the registry", ex);
}
}
else
{
try
{
regKey = Registry.CurrentUser.OpenSubKey("Software" +
"\Microsoft\Internet Explorer\Main" +
"\FeatureControl", true);
regKey.CreateSubKey("FEATURE_BROWSER_EMULATION");
regKey.SetValue(programName, browserVersion,
RegistryValueKind.DWord);
}
catch (Exception ex)
{
throw new Exception("Error accessing the registry", ex);
}
}
}
}
}
public enum IE
{
IE7 = 7000,
IE8 = 8000,
IE8StandardsMode = 8888,
IE9 = 9000,
IE9StandardsMode = 9999,
IE10 = 10000,
IE10StandardsMode = 10001
}
它的第三个和link:
Link:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
"YourApplicationFileName.exe"=dword:00002af9
"YourApplicationFileName.vshost.exe"=dword:00002af9
更新 1:
我正在使用默认的 C# Web 浏览器控件(基于 IE)并且 http://whatsmybrowser.org 说:您的浏览器是 "Internet Explorer 8 on Windows 7"
更新 2:
当我在 Windows 7 上安装 IE 11 时,我的 .exe 文件工作正常,但我想使用代码更改设置,而不是安装 IE11。
在阅读 the link you provided 时,要理解的关键是它不会为您提供最新版本的 IE(即 IE 11) - 它为您提供最新版本的 IE 安装在您的机器上.
您的机器安装了 IE 8。由于 C# Web 浏览器控件使用的 IE 版本与您的计算机安装的版本相同,因此您的 C# 应用程序使用的是 IE 8。
很遗憾,Google地图不再支持 IE 8。
因此,您有三组选项:
- 在机器上升级 IE(例如升级到 IE 11)。
- 在机器上升级 OS(例如升级到 Windows 10)- 因为这会自动为您升级 IE。
- 使用使用 IE 以外的东西进行呈现的控件(网页浏览器控件除外)。我不知道有什么好处 质量选项。