使用Puppet更改TrustedInstaller拥有的registry项的权限

我试图将所有的Windows 10连接设置为阻止自动更新。 这需要在HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost下编辑值,但是Puppet Agent(以LocalSystem身份运行)无法修改这些值,例如:

 Error:/Stage[main]/Main/Node[default]/Registry_value[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\Default]: Could not evaluate: Unexpected exception from Win32 API. detail: (Access denied.). ERROR CODE: 5. Puppet Error ID: F46C6AE2-C711-48F9-86D6-5D50E1988E48 

因为密钥由TrustedInstaller拥有。

是否有可能以自动方式修改这些值?

更新。 site.pp有问题的部分:

 node default { registry_value { 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\3G': ensure => present, type => dword, data => "2", } registry_value { 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\4G': ensure => present, type => dword, data => "2", } registry_value { 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\Default': ensure => present, type => dword, data => "2", } registry_value { 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\Ethernet': ensure => present, type => dword, data => "2", } registry_value { 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\WiFi': ensure => present, type => dword, data => "2", } } 

这似乎是一个权限问题,其中LocalSystem只是没有凭据来更改这些注册表值。 您可以执行以下任一操作:

  • 将LocalSystem添加到正确的组(使用组资源),以便它具有适当的权限,以便您可以调整这些键(快速搜索不像这是一个组帐户,而是一个特殊帐户)
  • 在进行更改之前,使用exec来让LocalSystem对这些密钥的写入权限
  • 可能授予翻译为TrustedInstaller的特权(快速搜索不会将其作为可能)

它看起来像你需要像cacl.exe调用设置权限,覆盖TrustedInstaller作为所有者和授予LocalSystem所有权,然后在那里的权限。 请先研究一下,以了解这个变化之前的影响,以及如何改变这个设定,如果你想扭转这个设定。

注意:ACL模块尚未处理注册表的权限,但可能在将来。