使用wix安装程序创建注册表项

时间:2014-09-30 22:11:13

标签: xml wix installer wix3.7

我是wix的新手,但我必须将它用于一个项目。我需要禁用用户更改密码的功能。为此,我想添加/更改注册表项,但这不起作用:

<DirectoryRef Id="TARGETDIR">
    <Component Id="RegistryEntries" Guid="*">
        <RegistryKey Root="HKCU"
                     Key="Software\Microsoft\Windows\CurrentVersion\Policies\System"> 
            <RegistryValue Type="integer" Name="DisablePW" Value="1" KeyPath="yes"/>
            <RegistryValue Type="string" Value="Default Value"/>
        </RegistryKey>
    </Component>
</DirectoryRef>

在策略下,还没有系统密钥,所以我认为这会创建一个。

2 个答案:

答案 0 :(得分:1)

您永远不应该写入这样一个关键且受政策控制的Windows注册表项。

我猜是域名控制器会通过group policy还原这些设置:

  

...默认情况下,Microsoft Windows每隔90分钟刷新一次策略设置,随机播放30分钟

在登录脚本或其他一些管理功能中,当然也可以重置一些东西。

这不是解决方案 - 您的应用程序需要重新设计。为什么你需要禁用用户改变密码的能力呢?混淆这些设置是非常糟糕的做法。 Software\Microsoft\Windows\CurrentVersion\Policies\下的任何内容都不应该被搞乱。

答案 1 :(得分:0)

永远不要忘记在Feature标记之间添加组件ID。如果不是,它将不会包含在安装程序中。

<Feature Id="DefaultFeature" Level="1">
         <ComponentRef Id="RegistryEntries"/>
</Feature>

PS:恕我直言和SO Wix中的其他答案应该只处理添加全新的注册表值(安装前不存在),因为在卸载时它们将被删除。如果要修改或删除注册表项,请确保使用自定义操作(脚本,程序,批处理,.reg,...)来回滚此更改。

相关问题