msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx
# File lib/puppet/util/windows/registry.rb, line 22 def open(name, path, mode = KEY_READ | KEY64, &block) hkey = root(name) begin hkey.open(path, mode) do |subkey| return yield subkey end rescue Win32::Registry::Error => error raise Puppet::Util::Windows::Error.new("Failed to open registry key '#{hkey.keyname}\\#{path}'", error.code, error) end end
# File lib/puppet/util/windows/registry.rb, line 16 def root(name) Win32::Registry.const_get(name) rescue NameError raise Puppet::Error, "Invalid registry key '#{name}'", $!.backtrace end
# File lib/puppet/util/windows/registry.rb, line 33 def values(subkey) values = {} subkey.each_value do |name, type, data| case type when Win32::Registry::REG_MULTI_SZ data.each { |str| force_encoding(str) } when Win32::Registry::REG_SZ, Win32::Registry::REG_EXPAND_SZ force_encoding(data) end values[name] = data end values end