c++ - 调用 IWebBrowser2->get_Document 时出现错误 800706B5

标签 c++ windows internet-explorer com windows-vista

在使用 IE8 的 Vista 上,我有一个 IWebBrowser2 的实例,我用它来获取当前的 HTML 文档:

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

当管理员执行此操作时,调用成功。但是,当由普通用户调用时,尽管页面位于“受信任的站点”并且“保护模式”处于关闭状态,但该调用会返回错误代码“800706B5”(“接口(interface)未知”)。

同样的代码在 Vista 的 IE7 和 XP 的 IE8 上运行没有问题。

有谁知道为什么会出现此错误,以及我可以采取什么措施来解决此问题?以管理员身份运行并不理想,Jon Skeet 也被这个难住了:)

更新:这个问题似乎围绕着 UAC:完全关闭 UAC 可以让普通用户正常工作(尽管它显然不安全)

最佳答案

错误的发生是因为在 Vista 上,IE 8 以“低完整性”模式运行,而我的测试代码以普通用户身份运行,以“中等完整性”运行。安全模型的设计使得代码可以向完整性较低的组件发送指令,但默认情况下无法从“较低”组件读取数据到“较高”组件。

本文档提供了有关 How the Integrity Mechanism Is Implemented in Windows Vista 的更多信息

关于c++ - 调用 IWebBrowser2->get_Document 时出现错误 800706B5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427370/

相关文章:

c++ - 将 Eigen 仿射变换转换为 Eigen 等距变换

c++ - 在 bazel 中替代 "` --whole-archive`"

c++ - C++ 中的函数式编程。实现 f(a)(b)(c)

Windows docker : permission denied/var/run/docker. socks

php - 在 Windows 10 和 PHP7 上将 ZeroMQ PHP 扩展添加到 XAMPP

Javascript 焦点丢失

c++ - 检测多个枚举项何时映射到相同的值

java - jmap -histo 与 Windows 上的特定对象

jquery - 带有 flash 的隐藏 DIV 不会用 jQuery 显示

javascript - IE7 Javascript 无法正常工作