0

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

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

在 HKCU 下注册时,应在注册表项中进行哪些更改以同时适用于管理员和非管理员用户?

谢谢

4

1 回答 1

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。

于 2010-02-17T18:13:11.577 回答