我有一个ActiveX控件,正在Internet Explorer中用JavaScript加载。它需要在Vista和Win7中的UAC下以中等完整性运行。这是用C / C ++编写的,在Visual Studio中编译。

提升特权的一种方法是创建可以请求中等完整性级别的代理进程。但是,对于该项目,这不是实际的解决方案。我真的需要ActiveX控件本身来提升运行。

我的问题是:最简单的方法是什么?是否可以将项目的生成选项更改为exe,并使用COM进程间连接系统自动处理通信,还是需要更复杂?我是否需要做一些复杂的事情,例如手动调用CreateProcess并创建某种代理,还是可以将其用作提升自身的ActiveX exe?

最佳答案

它主要取决于ActiveX控件的功能,如何将其嵌入到页面中以及如何实现。

最简单的方法可能是将其实现为服务器EXE,将其适当注册,然后赋予可执行权限以在Low Rights Elevation Policy中的中等位置运行。

如果您不想走那么远,可以编写一个简单的自定义进程外服务器,再次进行注册,然后实现自己的IClassFactory来将创建请求代理到现有DLL中。您甚至可以为现有对象添加一个AppID密钥,然后将其指定为DllSurrogate(而不是将其注册为COM +应用程序),但是您可能不容易在代理中强制创建对象(因为IE的默认值为在创建将首先获取进程内注册的对象时指定CLSCTX_ALL)。

当然,毕竟,如果您的代码对它的位置或使用任何非代理的接口进行了太多假设,那么它可能始终无法工作。

关于internet-explorer - 使用提升的权限在Internet Explorer中加载ActiveX DLL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2437408/

10-15 11:23