2010-02-12 45 views
0

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

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

当在HKCU下完成注册时,注册表项中应该更改哪些内容以适用于管理员和非管理员用户?

谢谢

回答

0

如果你的项HKCU下真正注册,它会工作。您使用的是MSI安装程序?应该有一种方法来指定它应该以用户模式安装。

你让dll自注册还是让msi注册dll?让MSI去做它是最好的做法,但它更加痛苦。如果你有.dll自注册,你需要确保dll注册在HKEY_CURRENT_USER中,而不是HKEY_LOCAL_MACHINE,默认情况下是ATL。

如果你建立了它在VS2008与ATL,你将要添加: AtlSetPerUserRegistration(true); 您的DllRegisterServer和DllUnregisterServer。

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

+0

谢谢, 我使用MSI安装,但导入注册表时出现问题。 – Zaky 2010-03-14 13:27:24

+0

这是否意味着你发现了这个问题?如果是这样,你可以发布它作为答案吗?如果没有,如果你能回答我在答案中提出的一些问题,我可能会提供更多的见解。 – taxilian 2010-03-18 16:48:25