代码之家  ›  专栏  ›  技术社区  ›  adum

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

  •  3
  • adum  · 技术社区  · 14 年前

    我有一个ActiveX控件,正在Internet Explorer中用JavaScript加载。它需要在vista和win7的uac下作为中等完整性运行。这是用C/C++编写的,在VisualStudio中编译。

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

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   tyranid    14 年前

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

    最简单的方法可能是将其实现为服务器exe,根据需要注册它,然后授予可执行文件在 Low Rights Elevation Policy .

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

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

    推荐文章