【问题标题】:Load ActiveX DLL in Internet Explorer with elevated privileges使用提升的权限在 Internet Explorer 中加载 ActiveX DLL
【发布时间】:2011-01-27 02:26:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: internet-explorer activex uac elevation


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多