上下文
我正在将ActiveX控件的安装程序从Per-Machine迁移到Per-User。我通过编写安装程序写入HKCU\Software\Classes
而不是HKLM\Software\Classes
来完成此操作。
问题
在我的计算机上(启用了UAC的Windows 7),ActiveX控件成功加载。在其他Windows 7测试机器上(一个启用了UAC,一个启用了UAC),控制器“部分”加载。
什么是部分?
当用户使用ActiveX控件访问页面时,Internet Explorer会在窗口顶部的黄色栏中显示警告消息。如果单击栏中的“运行加载项”按钮,控件将变为可见并开始运行,但尝试访问控件属性的Javascript代码将返回错误:
Library not registered
。
机器之间的差异
在开发机器上,从HKCR\CLSID\<GUID>
读取成功,而在测试机器上这些读取失败。从HKCU读取开发和测试机器的成功。来自HKLM的读取在测试和开发机器上都失败了。 (我使用Sysinternals Process Monitor收集了读取内容)奇怪的是,如果我使用regedit在测试计算机上查看HKCR\CLSID\<GUID>
,则Internet Explorer无法读取的键清晰可见。
问题
如何在测试计算机上加载每用户控件?什么可能导致开发机器和测试机器之间的这种差异?为什么我可以通过RegEdit查看HKCR中的密钥但是Internet Explorer看不到密钥?
感谢任何帮助。谢谢。