Проблема с этим .NET webbrowser и реестр
Привет,
Я знаю, что подобные проблемы уже были размещены здесь раньше. Я знаю это, потому что искал на этом сайте решения, но те, которые я нашел, не сработали для меня.
У меня проблема с управлением веб-браузером. Прямо сейчас он отображает страницы, как старая версия Internet Explorer. Мне нужно, чтобы он отображал их так, как это сделали бы Microsoft Edge или Chrome. Некоторые из решений, которые я нашел для других версий той же проблемы, включают вставку HTML-тега. Это не сработало для меня.
Другое решение, которое, кажется, делает трюк для многих людей, состоит в том, чтобы создать значение в базе данных реестра с именем вашего приложения (например, myApp.exe) и целочисленное значение, представляющее, какую версию Internet Explorer вы хотите, чтобы элемент управления веб-браузером вел себя как - десятичное значение 10001, по-видимому, является Edge, а 8888 и 9999-самыми последними версиями Internet Explorer.
Именно тогда я написал этот код, который до сих пор не работает. Согласно одному веб-сайту, чей url я собираюсь предоставить, член JavaScript
document.documentMode
должно быть равно 11 для Edge, когда он работает (то есть когда элемент управления веб-браузером ведет себя как Edge из-за значения 10001 в базе данных реестра). Излишне говорить, что здесь documentMode установлен на 5, как будто он полностью игнорирует значения реестра, которые я установил. Я создал как относительные, так и абсолютные пути к моему EXE (отладочная сборка Visual Studio) как в 32-разрядной, так и в 64-разрядной частях regedit, а также в HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE. Мне не разрешалось прикасаться к последнему с помощью C#. Запуск моего приложения без прав администратора вызвал исключение; с правами администратора он просто проигнорировал мою попытку создать значение в HKEY_LOCAL_MACHINE.Это код, который я написал:
public partial class MainForm : Form { const string regValue32cu = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; const string regValue64cu = @"HKEY_CURRENT_USER\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; const string regValue32lm = @"HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; const string regValue64lm = @"HKEY_LOCAL_MACHINE\Software\wow6432node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; const uint value = 10001U; public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { Microsoft.Win32.Registry.SetValue( regValue64cu, @"C:\Users\Thomas\source\C#\regedit\bin\Debug\YouseeLoader.exe", value, Microsoft.Win32.RegistryValueKind.DWord); Microsoft.Win32.Registry.SetValue( regValue64cu, @"YouseeLoader.exe", value, Microsoft.Win32.RegistryValueKind.DWord); browser.DocumentText = "<script>document.write('Document Mode: ' + document.documentMode);</script>"; //browser.Navigate("https://tv.yousee.dk/tv-guide"); } }
Что я делаю не так? Мой exe называется YouseeLoader.exe. Он не является частью переменной окружения PATH. Цель моего приложения состоит в том, чтобы иметь возможность извлечь часть https://tv.yousee.dk/tv-guide[^] который вставляется в
<div id="mount"></div>
элемент в Edge и Chrome, но не в более старых версиях Internet Explorer, но сейчас я просто хочу, чтобы элемент управления веб-браузером отображался правильно, как Edge и Chrome.Заранее спасибо,
- Фома
Что я уже пробовал:
Управление Совместимостью Элементов Управления WebBrowser | Microsoft Docs[^] (статья с использованием document.documentMode с картинками)
internet explorer 8 - Как установить FEATURE_BROWSER_EMULATION в режим IE8? - переполнение стека[^] (32 - и 64-разрядные ключи реестра)
Элементы Управления Функциями Интернета (B..C) (Internet Explorer) | Microsoft Docs[^] (Статья MSDN об эмуляции браузера и описании значения)