lib/knj/win_registry.rb in knjrbfw-0.0.8 vs lib/knj/win_registry.rb in knjrbfw-0.0.9

- old
+ new

@@ -1,60 +1,60 @@ class Knj::Win::Registry - def self.const(type) - if type == :cur_user - return Win32::Registry::HKEY_CURRENT_USER - elsif type == :local_machine - return Win32::Registry::HKEY_LOCAL_MACHINE - else - raise "Unknown type: " + type.to_s - end - end - - def self.type(in_type) - return Win32::Registry::REG_SZ if in_type == :sz - return Win32::Registry::REG_DWORD if in_type == :dword - return Win32::Registry::REG_BINARY if in_type == :bin - return nil if in_type == nil - - raise "Unknown type: #{in_type}" - end - - def self.get(type, regpath, key, in_type = nil) - hkey = self.const(type) - hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg| - return reg[key, self.type(in_type)].to_s - - #reg.each_key do |k, v| - # puts k, v - #end - #reg.each_value do |k, v| - # puts k, v - #end - - #reg_typ, reg_val = reg.read('') - #return { - # :type => reg_typ, - # :value => reg_val - #} - end - end - - def self.set(type, regpath, key, content = nil, in_type = nil) - if key.is_a?(Array) - key.each do |v| - if v.is_a?(Array) - self.set(type, regpath, v[0], v[1], v[2]) - elsif v.is_a?(Hash) - self.set(type, regpath, k, v[:val], v[:type]) - else - raise "Unknown type: #{v.class.to_s}" - end - end - else - hkey = self.const(type) - hkey.create(regpath) - hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg| - reg[key.to_s, self.type(in_type)] = content.to_s - end - end - end + def self.const(type) + if type == :cur_user + return Win32::Registry::HKEY_CURRENT_USER + elsif type == :local_machine + return Win32::Registry::HKEY_LOCAL_MACHINE + else + raise "Unknown type: " + type.to_s + end + end + + def self.type(in_type) + return Win32::Registry::REG_SZ if in_type == :sz + return Win32::Registry::REG_DWORD if in_type == :dword + return Win32::Registry::REG_BINARY if in_type == :bin + return nil if in_type == nil + + raise "Unknown type: #{in_type}" + end + + def self.get(type, regpath, key, in_type = nil) + hkey = self.const(type) + hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg| + return reg[key, self.type(in_type)].to_s + + #reg.each_key do |k, v| + # puts k, v + #end + #reg.each_value do |k, v| + # puts k, v + #end + + #reg_typ, reg_val = reg.read('') + #return { + # :type => reg_typ, + # :value => reg_val + #} + end + end + + def self.set(type, regpath, key, content = nil, in_type = nil) + if key.is_a?(Array) + key.each do |v| + if v.is_a?(Array) + self.set(type, regpath, v[0], v[1], v[2]) + elsif v.is_a?(Hash) + self.set(type, regpath, k, v[:val], v[:type]) + else + raise "Unknown type: #{v.class.to_s}" + end + end + else + hkey = self.const(type) + hkey.create(regpath) + hkey.open(regpath, Win32::Registry::KEY_ALL_ACCESS) do |reg| + reg[key.to_s, self.type(in_type)] = content.to_s + end + end + end end \ No newline at end of file