我有一个在IE10中运行的ActiveX控件(插件),在Windows 8中启用了增强保护模式。(它根据http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx向CATID_AppContainerCompatible注册)
我需要我的插件与一个进程外的COM服务器通信,但是当我调用CoCreateInstance时,我得到一个“未注册的类”错误。我认为这是因为插件没有对注册表的读访问权限。
有没有办法让这项工作?
更新 -
事实证明我对“未注册的课程”错误的假设是错误的。
我已经添加了我的解决方案作为答案。我不知道为什么会破坏它,这与EPM的AppContainer隔离级别有关。另一个假设:/
如果有人能够更多地了解这里发生的事情,那将会有所帮助。
答案 0 :(得分:1)
当启用增强保护模式时,您无法执行大量操作,它是一个非常强大的沙箱。与进程外的COM服务器交谈当然在该列表中很高。跨进程互操作是病毒黑客应用的最喜欢的工具。这不仅仅是因为它使病毒摆脱如此困难,它可以完全和平凡地绕过沙盒限制。当你可以在另一个进程中运行代码时,没有任何保护模式,它完全失败了该功能。
只要您依赖该服务器,就没有真正的前进道路。
答案 1 :(得分:0)
为了使其工作,我只需将我的插件DLL放在Program Files文件夹中,或者将所有APPLICATION PACKAGES(读取,读取和执行)添加到其文件权限。然后我可以CoCreate一个COM对象并与我的COM本地服务器通信。