作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在使用 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/
在使用 IE8 的 Vista 上,我有一个 IWebBrowser2 的实例,我用它来获取当前的 HTML 文档: IWebBrowser2* browser; CComPtr disp; HRES
我是一名优秀的程序员,十分优秀!