- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Internet Explorer 中使用 JavaScript 加载的 ActiveX 控件。它需要在 Vista 和 Win7 的 UAC 下以中等完整性运行。这是用 C/C++ 编写的,在 Visual Studio 中编译。
提升权限的一种方法是创建一个可以请求中等完整性级别的代理进程。但是,对于这个项目,这不是一个实用的解决方案。我真的需要 ActiveX 控件本身来提升运行。
我的问题是:最简单的方法是什么?我可以将项目的构建选项更改为 exe,并使用 COM 进程间连接系统自动处理通信,还是我需要更复杂?我是否需要做任何复杂的事情,例如手动调用 CreateProcess 并创建某种代理,或者它是否可以作为提升自身的 ActiveX exe 工作?
最佳答案
这主要取决于您的 ActiveX 控件的用途、将其嵌入页面的方式以及它的实现方式。
最简单的方法可能是将其实现为服务器 EXE,适本地注册它,然后授予可执行权限以在 Low Rights Elevation Policy 中以中等速度运行。 .
如果您不想走那么远,您可以编写一个简单的自定义进程外服务器,再次注册并实现您自己的 IClassFactory 以将创建请求代理到现有 DLL 中.您甚至可以为现有对象添加一个 AppID key 并将其指定为一个 DllSurrogate 尽管(除了将其注册为 COM+ 应用程序之外)您可能无法轻易地在代理项中强制创建该对象(因为 IE 的默认设置是在创建对象时指定 CLSCTX_ALL,这将首先获取进程内注册)。
当然,毕竟如果您的代码对它的位置做出太多假设或使用任何非代理接口(interface),它可能无论如何都无法工作。
关于internet-explorer - 使用提升的权限在 Internet Explorer 中加载 ActiveX DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437408/
我是一名优秀的程序员,十分优秀!