【问题标题】:How to set the WebBrowser object in the .NET Framework to use whatever highest version of IE is installed on the users system如何在 .NET Framework 中设置 WebBrowser 对象以使用用户系统上安装的任何最高版本的 IE
【发布时间】:2025-12-15 10:35:01
【问题描述】:

所以标题说明了一切,我想要 C# 代码(所以请确保它不是 Visual Basic 代码)。这就是我想问的。我已经尝试过内置在 .NET 框架中的 Web 浏览器,但它看起来像是一些旧版本的 IE(如果我是对的话)。如果你回答了,那么谢谢我猜!我需要这个用于一个机器人只需登录网站的小项目(它是未来项目的基础)。

【问题讨论】:

  • 2019 年了。微软已经放弃了 IE,你也应该放弃 IE(如果可能的话)
  • Visual Studio 默认使用 IE,我不想过多使用 Awesomium 之类的东西,因为我不是专家,可能会把事情搞砸。

标签: c# .net request


【解决方案1】:

默认情况下它是 IE7。您可以敲入一个注册表项以在以后创建它:

public static void EnsureBrowserEmulationEnabled(string exename = "YourAppName.exe", bool uninstall = false)
{

    try
    {
        using (
            var rk = Registry.CurrentUser.OpenSubKey(
                    @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true)
        )
        {
            if (!uninstall)
            {
                dynamic value = rk.GetValue(exename);
                if (value == null)
                    rk.SetValue(exename, (uint)11001, RegistryValueKind.DWord);
            }
            else
                rk.DeleteValue(exename);
        }
    }
    catch
    {
    }
}

代码由this blog提供

可以在in MSDN找到可以用来代替 11001 的值

或者;您可以通过使用 WebClient/HttpWebRequest 而不是戳 Web 浏览器控件进行导航来做您想做的事吗?或者你能找到一些网站的 web 服务/api 版本,它会用 JSON 响应而不是试图操纵 html?

我有点好奇为什么你会关心一个页面的外观,如果它是一个正在使用它的机器人,但也许你正在从服务器上点击“你的 IE 太旧”..

【讨论】:

  • 所以 1 个答案,1 个问题要问我。答案:我只是想四处寻找,我想直接干扰 HTML 元素,比如将文本放入文本框中(对不起,如果我听起来有点愚蠢,我不擅长服务器的东西等等)。问题是,代码在哪里?我将它转储在 Form1.vb 中,但没有看到它工作......无论如何,感谢您的回答!
  • 好吧,我在问把代码放在哪里,我把 .cs 误认为 .vb (很抱歉造成混淆),所以我想你有点误解了我。那么放在哪里呢?
  • 只要你调用它来编写必要的注册表项就没有关系...
  • 我不太确定,我试着把它放在 Form1.cs 和一个 C# 类中。抱歉,如果这很烦人,但是当事情不起作用时,我只需要问。
  • 您能否编辑问题以说出您做了什么,并更准确地定义“不起作用”
最近更新 更多