【问题标题】:WebBrowser control crashes on Windows 10WebBrowser 控件在 Windows 10 上崩溃
【发布时间】:2015-12-31 03:28:06
【问题描述】:

以下简短代码示例演示了某些页面的 WebBrowser 崩溃。该问题在 2015 年 12 月 26 日至 27 日全新安装 Windows 10 和 Visual Studio Community 2015 后开始出现。之前安装 Windows 10 和 Visual Studio Community 2015 时未出现此问题。同一程序已在另一台计算机上进行了测试相同的软件和操作系统以及相同的问题 发生。

点击“下载 2”成功从 Google 下载页面。

单击“下载 1”开始从 Bloomberg 下载,在大部分页面可见后,会打开一条弹出消息,其中显示“WindowsFormsApplication1.exe 已触发断点”。执行在“Application.Run(new Form1())”行停止。有时错误消息在页面滚动之前不会显示。在 IE11 上下载相同的 URL 没有问题,开发者工具/兼容性表明没有问题。将注册表中的 Webbrowser 仿真级别设置为 11001 没有任何区别。 WebBrowser1.ScriptErrorsSuppressed 没有区别。

如果单击“继续”,则会打开另一条消息,其中显示“WindowsFormsApplication1.exe 中 0x12C731C2 (Flash.ocx) 处的未处理异常:0xC0000602:发生快速失败异常。将不会调用异常处理程序 并且该进程将立即终止。”

如果选择“继续”,则会打开另一条消息,其中显示“WindowsFormsApplication1.exe 中在 0x00000000 处引发异常:0xC0000005:执行位置 0x00000000 的访问冲突。如果有此异常的处理程序, 该程序可以安全地继续进行。”

有什么办法可以解决问题吗?

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public class Form1 : Form
{

    TextBox textBox1;
    TextBox textBox2;
    Button button1;
    Button button2;
    TableLayoutPanel table1;
    WebBrowser webBrowser1;

    public Form1()
    {

        textBox1 = new TextBox();
        textBox1.Width = 200;
        textBox1.Text = "http://www.bloomberg.com/energy";

        button1 = new Button();
        button1.Text = "Download 1";
        button1.Click += button1_Click;

        textBox2 = new TextBox();
        textBox2.Width = 200;
        textBox2.Text = "http://www.google.com";

        button2 = new Button();
        button2.Text = "Download 2";
        button2.Click += button2_Click;

        webBrowser1 = new WebBrowser();
        webBrowser1.Dock = DockStyle.Fill;
        webBrowser1.ScriptErrorsSuppressed = true;

        table1 = new TableLayoutPanel();
        table1.Dock = DockStyle.Fill;
        table1.RowCount = 3;
        table1.ColumnCount = 2;
        table1.Controls.Add(textBox1, 0, 0);
        table1.Controls.Add(button1, 1, 0);
        table1.Controls.Add(textBox2, 0, 1);
        table1.Controls.Add(button2, 1, 1);
        table1.Controls.Add(webBrowser1, 0, 2);
        table1.SetColumnSpan(webBrowser1, 2);

        this.Controls.Add(table1);
        this.WindowState = FormWindowState.Maximized;

    }

    private void button1_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(textBox1.Text);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(textBox2.Text);
    }

}

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        } catch (Exception ex)
        {
            string msg = ex.Message;
        }
    }
}
}

【问题讨论】:

    标签: c# webbrowser-control


    【解决方案1】:

    我在 Windows 10 上的应用程序遇到了同样的问题,它在 Windows XP / Vista / 7 / 8 / 8.1 甚至在全新安装的 Windows 10 上都能正常工作,但几个小时后它就停止工作了。

    该应用程序是在 Visual Studio 2010 上开发的,并切换到 Visual Studio 2013 Ultimate,认为它可能与 Edge / ActiveX 不兼容 问题但没有:(

    更新

    此问题已在 Microsoft 的 update 中得到修复。这个 bug 是一些 flash 与 activeX 的不兼容。

    【讨论】:

    • 通过删除 Flash 的 Windows 更新解决了问题 (KB3132372)
    • 嗯,更新会自动重新安装,所以它不是一个解决方法。
    【解决方案2】:

    当 W8/W10 上的 webbrowser 控件导航到包含 ActiveX(Flash) 的页面时,我遇到了同样的问题。

    目前唯一的解决方案是删除 KB3132372 windows update。可以通过cmd命令制作:

    wusa.exe /uninstall /kb:3132372 /norestart /quiet

    很遗憾,Windows 8/10 将来会尝试再次安装它。由于这个原因也可以隐藏这个更新如图here

    【讨论】:

      【解决方案3】:

      也许有帮助。

      关于我开发的使用 webBrowser 控件的应用程序,我遇到了几乎相同的问题。在这个应用程序中,我启用了浏览器仿真,让用户选择用于可视化网站的浏览器。
      浏览器仿真代码设置注册表项:

      HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

      使用包含应用程序名称的键和选择要模拟的浏览器的值。 (IE8 为 8000d,IE9 为 9000,Edge 为 11001)。

      几天前,应用程序开始崩溃,没有对软件进行任何修改。经过一天半的调查,我发现了以下规律:

      • 选择键时,浏览器与我的应用程序一起崩溃。
      • 当未选择该键时,应用程序不会崩溃,但它会模拟旧版本的 IE。

      我还在研究这个话题,如果我发现更多东西我会在这里发布。

      无论如何,删除 KB3132372 问题就解决了,但是这个 KB 会在 Win10 上自动加载,如果用户不知道这个问题,它可能会造成破坏。

      关于 KB3132372 禁用进一步上传此更新的重要建议:它在许多基于 webBrowser 控件的应用程序中造成许多问题。您可以建议您的客户将其删除,并使用 Windows Update 显示/隐藏实用程序来隐藏更新(请参阅 https://support.microsoft.com/en-au/kb/3073930),否则每次自动上传都会重新上传。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,我的应用程序运行了几个月都没有问题,在安装了提到的 Microsoft 更新之后的那些日子:

        适用于 Flash 的 Windows 更新 (KB3132372)

        当打开带有嵌入式浏览器的对话框时,我的应用程序崩溃了。奇怪的是显示的网页没有flash元素,卸载此更新(KB3132372)后一切正常。

        【讨论】:

          【解决方案5】:

          作为 StefanBelo 的回答,问题是用于 Flash 的 Windows 更新 (KB3132372)。

          现在问题在KB3133431 中解决了。 只需运行 Windows 更新,问题就会得到解决(对我来说确实如此)。

          【讨论】:

            【解决方案6】:

            关于我的问题仅在 webbrowser 组件通过 youtube iframe api 加载 youtube 视频时出现。这让我发疯,因为几天前一切都很完美。 确认解决方案正在删除 KB3132372 使用 wusa.exe /uninstall /kb:3132372 /norestart /quiet

            非常感谢。

            【讨论】:

            • 这是糟糕的英语,不是答案。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-01
            • 2022-06-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-16
            相关资源
            最近更新 更多