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

时间:2009-09-15 14:01:02

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

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

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

当管理员执行此操作时,呼叫成功。但是,当普通用户呼叫时,尽管该页面处于“可信站点”和“保护模式”关闭,但该呼叫返回错误代码“800706B5”(“接口未知”)。

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

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

更新:问题似乎围绕着UAC:关闭UAC完全允许普通用户的工作(虽然它明显不安全)

2 个答案:

答案 0 :(得分:1)

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

本文档提供了有关How the Integrity Mechanism Is Implemented in Windows Vista

的更多信息

答案 1 :(得分:0)

管理员是否安装了IE8“仅限此用户”?我不知道为什么或者如果这会产生这个错误,只是预感。