///
///修改注册表信息来兼容当前程序///
///
static void SetWebBrowserFeatures(intieVersion)
{//don't change the registry if running in-proc inside Visual Studio
if (LicenseManager.UsageMode !=LicenseUsageMode.Runtime)return;//获取程序及名称
var appName =System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);//得到浏览器的模式的值
UInt32 ieMode =GeoEmulationModee(ieVersion);var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";//设置浏览器对应用程序(appName)以什么模式(ieMode)运行
Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION",
appName, ieMode, RegistryValueKind.DWord);//enable the features which are "On" for the full Internet Explorer browser//不晓得设置有什么用
Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",
appName,1, RegistryValueKind.DWord);//Registry.SetValue(featureControlRegKey + "FEATURE_AJAX_CONNECTIONEVENTS",//appName, 1, RegistryValueKind.DWord);//Registry.SetValue(featureControlRegKey + "FEATURE_GPU_RENDERING",//appName, 1, RegistryValueKind.DWord);//Registry.SetValue(featureControlRegKey + "FEATURE_WEBOC_DOCUMENT_ZOOM",//appName, 1, RegistryValueKind.DWord);//Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE",//appName, 0, RegistryValueKind.DWord);
}///
///获取浏览器的版本///
///
static intGetBrowserVersion()
{int browserVersion = 0;using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer",
RegistryKeyPermissionCheck.ReadSubTree,
System.Security.AccessControl.RegistryRights.QueryValues))
{var version = ieKey.GetValue("svcVersion");if (null ==version)
{
version= ieKey.GetValue("Version");if (null ==version)throw new ApplicationException("Microsoft Internet Explorer is required!");
}int.TryParse(version.ToString().Split('.')[0], outbrowserVersion);
}//如果小于7
if (browserVersion < 7)
{throw new ApplicationException("不支持的浏览器版本!");
}returnbrowserVersion;
}///
///通过版本得到浏览器模式的值///
///
///
static UInt32 GeoEmulationModee(intbrowserVersion)
{
UInt32 mode= 11000; //Internet Explorer 11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 Standards mode.
switch(browserVersion)
{case 7:
mode= 7000; //Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.
break;case 8:
mode= 8000; //Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
break;case 9:
mode= 9000; //Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
break;case 10:
mode= 10000; //Internet Explorer 10.
break;case 11:
mode= 11000; //Internet Explorer 11
break;
}returnmode;
}