2009-10-23 36 views
0

在我的应用程序安装项目上,我试图在HKLM/Software或HKCU/Software下设置注册表项,具体取决于用户是选中“All Users”还是“Just我“在安装过程中。在VS2008的安装项目中使用条件字段

对于这个效果,我一直在尝试使用ALLUSERS属性,并检查它反对1或 “”,分别为:

  • ALLUSERS = 1
  • ALLUSERS = “”

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

我错过了什么?

更新:我一直喜欢封闭在方括号ALLUSERS,使传递的财产或使用ALLUSERS其他替代品= 1而不是=“”。无济于事。我现在放弃了这一点,并且只是在这两种情况下在HKLM下创建。但如果有人有答案,我会很感激。

+0

如果有人能改善这个问题,请开除。我觉得很奇怪,到目前为止我还没有得到任何答案。要么我偶然发现了一个罕见的,没有人知道的广泛使用的功能,或者更可能我没有问这个问题。 – 2009-10-25 00:16:32

+0

-anyone + anyway – 2009-10-25 00:17:02

回答

2

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

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

+1

虽然最初并没有解决我的问题,但是你暗示我可能会出错。谢谢你。问题与此有关。我做错了什么。我正在使用HKLM和HKCU蜂房,并试图有条件地设置密钥。但是我完全错过了安装项目注册表编辑器的最后一项。一个显眼的“用户/机器蜂巢”。这就是我应该放置钥匙的地方,而不是直接置于HKLM或HKCU之下。傻我。 – 2009-10-26 13:11:05

相关问题