Ошибка 800706B5 при вызове IWebBrowser2-> get_Document - PullRequest
2 голосов
/ 15 сентября 2009

В Vista, использующей IE8, у меня есть экземпляр IWebBrowser2, который я использую для получения текущего HTML-документа:

IWebBrowser2* browser;
CComPtr<IDispatch> disp;
HRESULT hr = browser->get_Document(&disp);

Когда это выполняется администратором, вызов завершается успешно. Однако при вызове обычным пользователем вызов возвращает код ошибки «800706B5» («Интерфейс неизвестен»), несмотря на то, что страница на «Надежном сайте» и «Защищенный режим» отключены.

Этот же код работал без проблем на IE7 на Vista и на IE8 на XP.

Кто-нибудь знает, почему эта ошибка может возникать, и что я могу сделать, чтобы решить эту проблему? Запуск от имени администратора не идеален, и Джон Скит тоже озадачен этим:)

Обновление: вопрос, кажется, вращается вокруг UAC: полное отключение UAC позволяет работать обычному пользователю (хотя это явно небезопасно)

Ответы [ 2 ]

1 голос
/ 18 ноября 2009

Ошибка возникает из-за того, что в Vista IE 8 работает в режиме «низкой целостности», тогда как мой тестовый код, работающий как обычный пользователь, работает со «средней целостностью». Модель безопасности разработана таким образом, что код может отправлять инструкции компонентам с более низкой целостностью, но по умолчанию данные не могут быть прочитаны из «более низких» в «более высокие» компоненты.

В этом документе содержится дополнительная информация о Как механизм целостности реализован в Windows Vista

0 голосов
/ 15 сентября 2009

Был ли установлен IE8 администратором "Только для этого пользователя"? Я не знаю, почему или если бы это дало такую ​​ошибку, просто догадка.

...