0

在我的应用程序设置项目中,我正在尝试在 HKLM/Software 或 HKCU/Software 下设置注册表项,具体取决于用户在设置期间是否选中了“所有用户”或“只有我”。

为此,我一直在尝试使用 ALLUSERS 属性并分别对照 1 或 "" 检查它:

  • 所有用户 = 1
  • ALLUSERS = ""

我将键 AlwaysCreate 属性设置为 False。然而,在安装 HKLM/Software/ my_key和 HKCU/Software/ my_key时会创建。

我错过了什么?

更新:我一直在尝试其他替代方法,例如将 ALLUSERS 括在方括号中,启用传递属性或使用ALLUSERS != 1而不是= ""。无济于事。我现在放弃了,只在 HKLM 下为这两种情况创建。但是,如果有人确实有答案,我将不胜感激。

4

1 回答 1

2

我对 Windows Installer 的理解是,这种行为被抽象掉了,因此开发人员无需担心它。也就是说,如果未设置 ALLUSERS 属性,您的安装包将“自动”将注册表项放入 HKCU 而不是 HKLM。请参阅位于http://msdn.microsoft.com/en-us/library/aa367559%28VS.85%29.aspx的 MSDN 文档。因此,听起来好像您正在尝试通过设置项目重新实现此功能;我建议删除基于 ALLUSERS 属性的条件。

作为旁注,AlwaysCreate 属性控制在什么情况下将创建注册表项,特别是与注册表项的内容相关。通过将其设置为 false,您是在说“如果它没有任何子键或值,请不要创建此键”。将其设置为 true 意味着“创建此键,无论它是否具有任何子键或值”。MSDN 上的文档再次可用,网址为http://msdn.microsoft.com/en-us/library/e1t11k72%28VS.100%29.aspx

于 2009-10-25T23:26:07.810 回答