2014-09-30 131 views
2

我是wix的新手,但我必须将其用于项目。我需要禁用用户更改密码的功能。要做到这一点,我想添加/修改注册表项,但这不起作用:使用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

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

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

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

+0

** 1)**仅在** HKLM **中设置**只读**注册表项并适用于您的整个应用程序(典型示例:**许可证密钥**,选定**安装目录** ,共享的**服务器名称和端口设置**等)*或* ** 2)**将HKLM中的值设置为应用程序在为每个用户启动时复制到HKCU的模板值。使用MSI向HKCU写入任何值。这是多年部署经验的最佳建议。 – 2014-11-12 18:32:00

2

你不应该写这样一个关键和政策控制的Windows注册表项。

我的猜测是域控制器将通过group policy恢复这些设置:“...默认的Microsoft Windows刷新每90分钟一次的策略设置与随机30分钟偏移”。当然也可以在登录脚本或其他管理功能中重置事物。

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

+0

那么我不介意wix是否可以改变组策略。背景很简单:这将是一个演示应用程序,它应该运行在另一方面将被随机数量的人使用的测试机器上。所以我需要限制我所能做的一切。如果每个用户都可以使用ctrl + alt + del并使用任务管理器,更改pw等以退出演示应用程序,会发生什么?是的,基本上我的应用程序是一个大病毒。 – sceiler 2014-09-30 22:40:35

+0

这听起来像你需要的是一个锁定的机器设置。尝试[** serverfault.com **](http://www.serverfault.com)获取系统管理员帮助。他们可能会指向**默认脚本**,您可以运行该脚本来准备计算机以供演示使用。这必然会超过密码更改,必须锁定。 – 2014-09-30 22:45:26

+0

谢谢你的建议。不幸的是,这不起作用,因为我自己受限于这样做。无视我是否应该或不应该混淆组策略的注册表;你可以用wix指出我的错误并在注册表中添加/更改值吗? – sceiler 2014-09-30 22:51:03

相关问题