我是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>
在策略下,还没有系统密钥,所以我认为这会创建一个。
答案 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,...)来回滚此更改。