[转载] Winform WebBrowser 使用 Edge 内核
原文内容
1. 问题描述
用 C# 写了一个小工具, 需要显示网页上的内容, 但 WebBrowser 使用的是 IE 内核, 不能很好的展示网页
2. 解决方法
通过一些尝试, 在巧合之下找出了一种方法, 成功的让 WebBrowser 用上了 Edge 内核, 先上图

上代码:
/// <summary>
/// 修改注册表信息使WebBrowser使用指定版本IE内核
/// </summary>
public static void SetFeatures(UInt32 ieMode) {
if (LicenseManager.UsageMode != LicenseUsageMode.Runtime) {
throw new ApplicationException();
}
//获取程序及名称
string appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
string featureControlRegKey = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\";
//设置浏览器对应用程序(appName)以什么模式(ieMode)运行
Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION", appName, ieMode, RegistryValueKind.DWord);
//不晓得设置有什么用
Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", appName, 1, RegistryValueKind.DWord);
}
这个函数是网上复制的, 传入 11000 是 IE11, 9000 是 IE9, 只不过当试着传入 6000 时, 理应是 IE6, 可实际却是 Edge, 这时进一步测试, 当传入除 IE 现有版本以外的一些数值时 WebBrowser 都使用 Edge 内核

3. 结论
将 IE 版本号设置为非 IE 版本的数值就能使用 Edge 内核
小记
使用效果:
SetFeatures(898989545); // 随便写一个注册表内不存在的IE版本号

文章内修改内核版本是通过 SetFeatures 方法来实现,这段代码主要用于设置IE的特性和模式,特别是为了兼容性和性能方面的调整,以确保内嵌的WebBrowser控件在运行时以特定的IE版本或模式进行渲染。
起作用的主要是后面两句修改注册表的内容:
FEATURE_BROWSER_EMULATION:这个特性用于指定应用程序应以哪个版本的IE模式运行。用于确保Web页面在内嵌的WebBrowser控件中以指定的IE版本进行呈现。ieMode参数指定要使用的IE模式。FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION:这个特性是用于性能优化的,设置为1表示启用"子元素裁剪优化",可以提高渲染性能。
使用过程中通过调整不同的ieMode参数来指定WebBrowser的内核版本,一些常见的 ieMode 参数和与之对应的IE版本:
- IE7 模式:IE7模式将应用程序模拟为Internet Explorer 7。这通常是最低的模拟模式。
7000表示IE7模式。
- IE8 模式:IE8模式将应用程序模拟为Internet Explorer 8。
8000表示IE8模式。
- IE8 强制标准模式:IE8强制标准模式将应用程序模拟为Internet Explorer 8,同时强制使用标准模式呈现页面。
8888表示IE8强制标准模式。
- IE9 模式:IE9模式将应用程序模拟为Internet Explorer 9。
9000表示IE9模式。
- IE10 模式:IE10模式将应用程序模拟为Internet Explorer 10。
10000表示IE10模式。
- IE11 模式:IE11模式将应用程序模拟为Internet Explorer 11。
11000表示IE11模式。
原文内容补充: 将 IE 版本号设置为非 IE 版本的数值就能使用 Edge 内核 ,是因为在 Windows 操作系统中使用 WebBrowser 控件时,如果设置的 ieMode 参数无效或未明确定义,WebBrowser 控件将默认以 Edge 模式运行,而不是使用较旧版本的 Internet Explorer 模式。
也就是说,ieMode 参数的有效值通常是与注册表中定义的IE版本号相关的,如前面提到的一些常见的值。如果提供一个未被识别的值,WebBrowser 控件可能会默认选择 Edge 模式。这是由于Microsoft希望鼓励开发者采用最新的技术和标准,而不是过时的IE版本。
使用该方法需要注意的是,修改注册表是系统级的操作,需要管理员权限来执行。如果在程序中使用,需要确保适当的处理权限问题,避免权限拒绝错误。
此外,修改注册表是存在潜在风险的,需要谨慎操作。
浏览器内核检测工具地址:https://ie.icoa.cn/
保留项
每台PC手动更改注册表项来强制 WebBrowser 控件使用特定的IE版本:
打开注册表编辑器(Registry Editor)。您可以按Win + R,然后输入 "regedit" 并按回车键来打开它。
在注册表编辑器中,导航到以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
或
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
取决于程序是32位还是64位。
在 FEATURE_BROWSER_EMULATION 路径下,创建一个新的 DWORD (32-bit) 值,命名为应用程序的名称,例如 "YourApp.exe",然后将其数值数据设置为适当的IE版本。例如,要强制使用IE11模式,将数值数据设置为 11001(以十进制表示)。
- 关闭注册表编辑器。
在您的应用程序中使用WebBrowser控件时,它将使用设置的IE版本进行渲染。
[转载] Winform WebBrowser 使用 Edge 内核的更多相关文章
- C#设置WebBrowser使用Edge内核
原文:C#设置WebBrowser使用Edge内核 1. 问题描述 用C#写了一个小工具, 需要显示网页上的内容, 但WebBrowser使用的是IE内核, 不能很好的展示网页 2. 解决方法 通过一 ...
- C# winform webbrowser如何指定内核为IE11? 输出 this.webbrowser.Version 显示版本是IE11的,但实际版本不是啊! 网上打的修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULA
最佳答案 1)假设你应用程序的名字为MyApplication.exe 2)运行Regedit,打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\M ...
- C# winform webbrowser如何指定内核为IE11?
1)假设你应用程序的名字为MyApplication.exe 2)运行Regedit,打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsof ...
- C# (转载)webbrowser专题(参考资料:https://www.cnblogs.com/blogpro/p/11458390.html)
C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case :高亮显示 上一个例子中我们学会了查找文本——究跟到底,对Web页面还是只读不写.那么,如果 ...
- winform WebBrowser如何修改使用默认的IE浏览器版本
在搜了一些相关资料原来WebBrowser使用的是IE的兼容模式进行浏览(IE7模式). 建议:先添加注册表中,然后使用注册表编辑器导出功能,产生reg注册文件:方便日后使用. Winform We ...
- C# Winform WebBrowser控件
C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...
- PCB Winform使用谷歌webkit内核 应用
我们Winfrom界面嵌入网页最常用的是WebBrowser控件,因为微软自带的,使用方便,但在实际使用起来,会遇到各种麻烦(JS,不兼容问题,渲染等问题) 而实际WebBrowser控件内核是微软的 ...
- 调整Winfrom控件WebBrowser的默认浏览器内核版本
一.问题解析: 今天在调试程序的时候,需要使用C#的客户端远程登录一个Web页面,用到了WebBrowser控件.但是却发现了一件很神奇的事情:当前浏览器使用的内核,可以通过访问下面这个网站获取:ht ...
- 调整WebBrowser的默认浏览器内核版本
原文出自:https://my.oschina.net/Tsybius2014/blog/492107 注:这个是写.net控件,其实delphi是一样的.作者已经写的比较全面了,我只是做了一点修改 ...
- winform webbrowser如何强制使用ie11内核?
webkit.net ,cefsharp,openwebkit.net等这些基于谷歌或者基于firfox内核的浏览器有个共同点,就是必须指定winform为x86的才能使用, 而且使用过程中也是各种坑 ...
随机推荐
- module.exports和exports,应该用哪个
在 Node.js 编程中,模块是独立的功能单元,可以在项目间共享和重用.作为开发人员,模块让我们的生活更轻松,因为我们可以使用模块来增强应用程序的功能,而无需亲自编写.它们还允许我们组织和解耦代码, ...
- 通过Scrum实现最大生产力的五种方法
在数字化.信息化.智能化蓬勃发展的今天,敏捷开发和Scrum已成为重塑项目管理的重要方式. 敏捷是一种体现不同方法的思维方式,包括了Scrum,看板,极限编程(XP).精益开发等众多框架. Scrum ...
- 《SQL与数据库基础》09. 事务
@ 目录 事务 简介 操作 方式一 方式二 四大特性(ACID) 并发事务问题 事务隔离级别 本文以 MySQL 为例 事务 简介 事务是一组操作的集合,它是一个不可分割的工作单位.事务会把所有的操作 ...
- Ubuntu SVN服务端安装方法
Ubuntu SVN服务端安装方法:https://blog.csdn.net/sm_wang/article/details/78656120https://www.cnblogs.com/myme ...
- 小知识:PPT的幻灯片放映设置
最近给某客户讲课时,碰到了幻灯片自动翻页的情况,发现是因为之前做过粗略的计时演练,有些片子就快速过了. 问题现象: 结果导致放映时也出现了某些片子快速被自动翻页. 解决方案: 设置成手动推进幻灯片的方 ...
- 文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题
一.用go语言,证明:在 RANDOMIZED-SELECT 中,对长度为0的数组,不会进行递归调用. 文心一言: 在 Go 语言中,我们可以通过实现一个函数来检查数组的长度,如果长度为0,则不进行递 ...
- 四千行代码写的桌面操作系统GrapeOS完整代码开源了
简介 学习操作系统原理最好的方法是自己写一个简单的操作系统. GrapeOS是一个非常简单的x86多任务桌面操作系统,源代码只有四千行,非常适合用来学习操作系统原理. 源码地址:https://git ...
- 探秘公有IP地址与私有IP地址的区别及其在路由控制中的作用
引言 IP地址是互联网通信中至关重要的组成部分.虽然在前一章节我们讲解了IP一些基础知识,但在我们日常生活中,我们经常听到公有IP地址和私有IP地址这两个术语.那么,公有IP地址和私有IP地址有何区别 ...
- Go语言精进之路目录
目录 一.介绍 01.Go 语言的前生今世 二.开发环境搭建 01.Go 语言开发环境搭建 三.初识GO语言 01.Go 多版本管理工具 02.第一个 Go 程序"hello,world&q ...
- Batch Normalization 批量归一化的运算过程
Batch Normalization 批量归一化 具体的运算过程: 假设经过卷积计算过后得到的feature map的尺寸为 2*3*2*2. 其中2代表的是batch的大小,3代表的是通道chan ...