[转载] 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的才能使用, 而且使用过程中也是各种坑 ...
随机推荐
- 《SQL与数据库基础》05. SQL-DCL
目录 DCL 用户管理 权限控制 本文以 MySQL 为例 DCL 用户管理 查询有哪些用户: 1. USE mysql; SELECT * FROM user; 2. SELECT * FROM m ...
- Socket.io入门
Socket.io入门 根据官方文档socket.io使用必须客户端根服务端一致,socket.io不兼容webSocket或者其他模块,因为socket.io在连接时做了自定义处理, 所以不同的长连 ...
- Note -「普通生成函数 OGF」
\(\mathbf{OGF}\) 的定义 对于一个序列 \(a_{1},a_{2},\cdots\),我们称: \[G(x)=\sum_{i=0}^{\infty}a_{i}x^{i} \] 为序列 ...
- ERP 财务管理的应付帐款流程
导读:应付帐款流程与应收帐款流程是财务管理的开端,也是财务工作的主要流程.若能够这两大流程控制好了,ERP系统的财务模块也就成功了一大半了.我先讲一下财务管理的应付帐款流程. 企业的应付帐款有很多种类 ...
- Jmeter将响应数据的结果保存到本地的一个文件(xls和csv)
打印excel和csv文件的区别?? 第一种:打印excel 第二种:打印csv文件 创建beanshell后置处理器 import org.json.*;import java.io.*; Str ...
- Java算法之动态规划
①动态规划 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程.20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的 ...
- element ui的多个表格复选框,展开列显示错误
今天在公司写页面的时候碰到一个bug,我们的那个页面上有多个表格. 用v-if来判断显示,然后再使用复选框和展开列的时候出了问题.先是复选框,第二个表格的复选框下一列不显示,我试了试,在下面的一列都会 ...
- Java IO 与 NIO:高效的输入输出操作探究
引言 输入输出(IO)是任何编程语言中的核心概念,而在Java中,IO操作更是应用程序成功运行的基石.随着计算机系统变得越来越复杂,对IO的要求也日益增加.在本文中,我们将探讨Java IO和非阻塞I ...
- addEventListener学习
场景:给input框添加事件,但是里面的function得抽取出来复用,并且这个function还要传递参数 userId.addEventListener('input', idTest(userI ...
- Python 利用pymysql和openpyxl操作MySQL数据库并插入Excel数据
1. 需求分析 本文将介绍如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中. 2. 环境准备 在开始本文之前,请确保您已经安装好了以下环境: Pyt ...