厨师为Windows注册表输入转义ascii

时间:2014-11-07 21:37:02

标签: chef

使用Chef为IIS8.5创建注册表值SSL绑定是我发现创建此值的唯一方法是通过IIS管理器。

我正在尝试在Windows cookbook中使用以下内容,但是在转发此二进制数据的数据部分内的字符时遇到了问题。 \,','似乎不在这里工作。

registry_key "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\HTTP\\Parameters\\SslCcsBindingInfo\\443" do
    values [{:name => "AppId", :type => :binary, :data => "?áAMKá!J°"Yüf> ¶"},
            {:name => "CertStoreLocation", :type => :binary, :data => ""}
           ]
    action :create
end

2 个答案:

答案 0 :(得分:1)

对于二进制值,我使用了与regedit的显示格式类似的东西:

binstring = [<<BINARY_HEX.tr('^0-9A-Fa-f','')].pack('H*')
08 00 00 00 00 00 00 00
6F 00 77 00 00 00 00 00
00 00 00 00 00 00
BINARY_HEX

registry_key 'HKCU\Software\Something\Item' do
  values [{:name => 'ABinaryValue', :type => :binary, :data => binstring},
         ]
  action :create
end

这样可以更容易地将注册表编辑器中的二进制值与配方中的预期值进行直观比较。

参考:Convert string with hex ASCII codes to characters

答案 1 :(得分:0)

对于二进制数据编码,最好使用base64'd字符串文字:

require 'base64'
values [{:data => Base64.decode64("YmluYXJ5ZGF0YQ==")}]

或使用\x转义序列:

values [{:data => "\x45\xA0\xFF\x00"}]