网页浏览器使用ie10 c# winform

本文关键字:ie10 winform 网页浏览 浏览器 网页 | 更新日期: 2023-09-27 18:07:50

我想在我的c# winform应用程序中强制浏览器使用IE10。我知道还有其他类似的问题,但我已经读了很多,我不知道我错在哪里。

这是我的代码:

RegistryKey registrybrowser = Registry.LocalMachine.OpenSubKey
           (@"SOFTWARE'Microsoft'Internet Explorer'Main'FeatureControl'FEATURE_BROWSER_EMULATION", true);
        registrybrowser.SetValue("myAppName", 0x02710, RegistryValueKind.DWord); //Even with QWord

我尝试了不同的方法来设置值,如:

registrybrowser.SetValue("myAppName", 1000, RegistryValueKind.DWord); //Even with QWord and String
registrybrowser.SetValue("myAppName", 1000); //even with 0x02710

我在InitializeComponent()之前的主项目的构造函数中编写它。我在manifest文件

中设置了Admin权限

感谢所有人,BlackShawarna

编辑:我发现RegistryKey.SetValue(…);在另一个路径中创建了一个密钥:

(@"SOFTWARE'Wow6432Node'Microsoft'Internet Explorer'Main'FeatureControl'FEATURE_BROWSER_EMULATION") 

,即使我的指令说:Registry.LocalMachine.OpenSubKey (@"SOFTWARE'Microsoft'Internet Explorer'Main'FeatureControl'FEATURE_BROWSER_EMULATION", true);

我认为这是因为IE10在32位模式下工作。然而,我不明白为什么它写在那个路径,即使我指定了另一个,最重要的是,为什么我的应用程序不工作,即使我打开Registry.LocalMachine.OpenSubKey(@"Software'Wow6432Node....");

如果我只在x64模式下运行我的程序,进入properties/build/x64,它不会在我的原始路径中写入密钥。

网页浏览器使用ie10 c# winform

我有同样的问题,我的应用程序将值写为"HKEY_LOCAL_MACHINE'SOFTWARE'Wow6432Node'Microsoft'Internet Explorer'MAIN'FeatureControl'FEATURE_BROWSER_EMULATION"。

我将LocalMachine更改为CurrentUser,现在它工作了。

string executablePath = Environment.GetCommandLineArgs()[0];
string executableName = System.IO.Path.GetFileName(executablePath);
RegistryKey registrybrowser = Registry.CurrentUser.OpenSubKey
   (@"SOFTWARE'Microsoft'Internet Explorer'Main'FeatureControl'FEATURE_BROWSER_EMULATION", true);
if (registrybrowser == null)
{
    RegistryKey registryFolder = Registry.CurrentUser.OpenSubKey
        (@"SOFTWARE'Microsoft'Internet Explorer'Main'FeatureControl", true);
    registrybrowser = registryFolder.CreateSubKey("FEATURE_BROWSER_EMULATION");
}
registrybrowser.SetValue(executableName, 0x02710, RegistryValueKind.DWord);
registrybrowser.Close();

可执行文件名类似于"myAppName.exe"

注意:如果WebBrowser控件在DLL内,你需要指定托管EXE的名称,无论它可能是什么,例如System.AppDomain.CurrentDomain.FriendlyName

FEATURE_BROWSER_EMULATION "myAppName.exe"=10000(或0x02710)而非1000.

In 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

必须输入" myAppName。exe "而不是" myAppName "

如果您可以控制正在呈现的页面(例如内部网页面)以及使用WebBrowser控件呈现页面的应用程序,则可以在页面

中指定元标记。
<meta http-equiv="X-UA-Compatible" content="IE=10" />

并根据需要使用WebBrowser控件。你的机器上必须安装IE 10。

如果你想模仿其他版本的IE,你可以简单地用"IE=EmulateIE9", "IE=EmulateIE8"等代替"IE=10"