为非管理员用户注册DLL(ActiveX)

时间:2010-02-12 08:43:03

标签: dll activex windows-installer registration non-admin

我尝试使用MSI为非管理员用户注册dll(ActiveX)。 要创建注册表设置,我已在管理员模式下注册dll,然后导出相关的注册表项并将所有HKLM重命名为HKCU。

当我为非管理员用户安装时,一切正常。但是当我对admin用户使用相同的设置时,就会发现发现TypeLib的问题。

在HKCU下完成注册时,注册表项应该更改为管理员和非管理员用户?

谢谢

1 个答案:

答案 0 :(得分:0)

如果您的参赛作品真的在HKCU注册,它将起作用。您使用的MSI安装程序是什么?应该有一种方法来指定它应该以用户模式安装。

您是否让dll自行注册或让msi注册dll?让MSI做到这一点是最佳做法,但这更令人痛苦。如果您正在进行.dll自注册,则需要确保dll在HKEY_CURRENT_USER中注册而不是HKEY_LOCAL_MACHINE,ATL默认执行该注册。

如果您使用ATL在VS2008中构建它,则需要添加: AtlSetPerUserRegistration(true); 到你的DllRegisterServer和DllUnregisterServer。

无论如何,这些都是需要寻找的东西。您可以使用Process Monitor并观察Reg命令以查看到底发生了什么;某处正在写给HKLM。