3

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

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

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

4

1 回答 1

3

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

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

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

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

于 2010-03-16T22:36:14.187 回答