我尝试使用MSI为非管理员用户注册dll(ActiveX)。 要创建注册表设置,我已在管理员模式下注册dll,然后导出相关的注册表项并将所有HKLM重命名为HKCU。
当我为非管理员用户安装时,一切正常。但是当我对admin用户使用相同的设置时,就会发现发现TypeLib的问题。
在HKCU下完成注册时,注册表项应该更改为管理员和非管理员用户?
谢谢
答案 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。