Sha256: 6564a4d4ee3c14007f0b3b95c4377bc92b214e260e2bfe8beb3ad4ff86bb331d
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
class Specinfra::Command::Windows::Base::RegistryKey < Specinfra::Command::Windows::Base class << self REGISTRY_KEY_TYPES = { :type_string => 'String', :type_binary => 'Binary', :type_dword => 'DWord', :type_qword => 'QWord', :type_multistring => 'MultiString', :type_expandstring => 'ExpandString' } def check_exists(key_name) cmd = "(Get-Item 'Registry::#{key_name}') -ne $null" Backend::PowerShell::Command.new { exec cmd } end def check_has_property(key_name, key_property) cmd = "(Get-Item 'Registry::#{key_name}').GetValueKind('#{key_property[:name]}') -eq '#{get_key_type}'" Backend::PowerShell::Command.new { exec cmd } end def check_has_value(key_name, key_property) value = convert_key_property_value key_property cmd = "(Compare-Object (Get-Item 'Registry::#{key_name}').GetValue('#{key_property[:name]}') #{value}) -eq $null" Backend::PowerShell::Command.new { exec cmd } end private def do_not_convert? key_property[:type].to_s =~ /_converted/i end def get_key_type REGISTRY_KEY_TYPES[key_property[:type].to_s.gsub("_converted").to_sym] end def convert_key_property_value property return property if do_not_convert? case property[:type] when :type_binary byte_array = [property[:value]].pack('H*').bytes.to_a "([byte[]] #{byte_array.join(',')})" when :type_dword [property[:value].rjust(8, '0').scan(/[0-9a-f]{2}/i).reverse.join].pack("H*").unpack("l").first when :type_qword property[:value].hex else string_array = property[:value].split("\n").map {|s| "'#{s}'"}.reduce {|acc, s| "#{acc},#{s}"} "@(#{string_array})" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
specinfra-2.34.8 | lib/specinfra/command/windows/base/registry_key.rb |