我们正在迁移到 Windows 7(启用 UAC),这将阻止标准用户为内部 Web 应用程序安装 ActiveX 控件。
我可以访问可以提升权限的本地管理员帐户,并且可以轻松获取所需的 .cab 文件。有没有一种简单的方法可以以尊重 .inf 文件的方式安装它们?有问题的 .inf 文件包含用于控制安装的挂钩,因此我不想简单地在包含的 .ocx 文件上调用 regsvr32。
基本上我想用 C# 模拟 IE 安装过程,文件出现在“下载的程序文件”中,所有注册表设置都正确写入,等等。
顺便说一句,我注意到有一个可用于 Win7 机器的“ActiveX 安装服务”,但这似乎没有启用/配置。
附加信息
这个问题已被标记为重复,它看起来肯定与原始问题相似,但在我的场景中,我可以访问本地管理员帐户,所以我的问题专门关于模拟 IE 安装过程,而不是克服 UAC 限制。@Ben 建议了一个使用 advpack(通过 rundll32)的解决方案,但我无法让它在我的环境中工作,尽管我会继续调查。
与此同时,我已经能够实现一种蛮力方法,它可以使用 IE 精确复制安装行为。这需要将文件定位并提取到“已下载的程序文件”目录,在提取的 ocx/dll 文件上调用 regsvr32,然后将条目添加到以下注册表位置:
HKLM\SOFTWARE\Microsoft\Code Store Database\Distribution Units HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ModuleUsage HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls
我目前无法用这些信息回答我自己的问题。