我正在用qt构建一个activex控件。如果我将其注册为control-name.exe /regserver
,则IE11可以加载它。然后将寄存器条目写入HKEY_CLASSES_ROOT
和HKEY_LOCAL_MACHINE
。但是此Activex控件的用户没有管理员权限,因此我正在努力在此HKEY_CURRENT_USER
级别上注册此com服务器。
我试过将reg文件的CLSID
inHKEY_LOCAL_MACHINE
路径下的条目导出,并替换HKEY_LOCAL_MACHINE
为HKEY_CURRENT_USER
,然后将该reg文件导入回来(并删除具有相同的其他条目CLSID
)。但是IE11找不到Activex控件。这是否意味着IE11不在CLSID
in中寻找HKEY_CURRENT_USER
,而仅在HKEY_LOCAL_MACHINE
and中寻找HKEY_CLASSES_ROOT
?
我已经阅读了一些帖子和文章,但是仍然不确定是否可以实现“将com服务器注册为没有IE加载权限的com服务器”的想法。例如,如果我找到了一种将每个注册表放入HKEY_CURRENT_USER
(仍在运行)的方法,则IE可以加载我的activex控件吗?
有什么帮助吗?提前致谢。
更新:这是我做测试的方式:
control-name.exe /regserver
以管理员用户身份运行.reg
文件,然后删除这些注册表。HKEY_CLASSES_ROOT
和HKEY_LOCAL_MACHINE
对HKEY_CURRENT_USER
.reg
文件。我用RegCool搜索了注册表,发现注册表都在之下HKEY_CURRENT_USER/S-1-00.../...
。(S-1-00...
是一连串的数字)。
我建议你检查用户帐户是否具有尝试从中尝试以管理员身份安装控件的文件夹的访问权限?如果不是,则出于测试目的,尝试授予权限,并查看它是否对用户有效。
我认为我导出,修改和重新导入注册条目的方式是一个糟糕的捷径(我真的不明白Windows系统如何在内部工作)。显然,权限是正确的方法。