使用提升的权限在Internet Explorer中加载ActiveX DLL

时间:2010-03-13 05:45:10

标签: internet-explorer activex uac elevation

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

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

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

1 个答案:

答案 0 :(得分:3)

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

最简单的方法可能是将其实现为服务器EXE,根据需要进行注册,然后将可执行权限授予Low Rights Elevation Policy中的中等版本。

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

当然,如果您的代码对它的位置做了太多假设或使用任何非代理接口,那么无论如何它可能都无法正常工作。