Internet explorer 以提升的权限在Internet Explorer中加载ActiveX DLL

Internet explorer 以提升的权限在Internet Explorer中加载ActiveX DLL,internet-explorer,activex,uac,elevation,Internet Explorer,Activex,Uac,Elevation,我有一个ActiveX控件,我正在Internet Explorer中加载JavaScript。它需要在Vista和Win7的UAC下以中等完整性运行。这是用C/C++编写的,在Visual Studio中编译 提升权限的一种方法是创建可以请求中等完整性级别的代理进程。然而,对于这个项目来说,这不是一个实际的解决方案。我真的需要ActiveX控件本身来运行 我的问题是:最简单的方法是什么?我可以将项目上的构建选项更改为exe,并使用COM进程间连接系统自动处理通信,还是需要更复杂一些?我是否需要

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

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


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

这主要取决于ActiveX控件的功能、如何将其嵌入页面以及如何实现

最简单的方法可能是将其实现为一个服务器EXE,根据需要注册它,然后授予可执行文件在介质中运行的权限

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

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