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

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

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

有帮助吗?

解决方案

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

最简单的方法可能是将其实现为服务器 EXE,适当注册它,然后授予在介质中运行的可执行权限。 低权限提升策略.

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top