编辑注册表项错误

时间:2015-01-22 03:56:13

标签: ruby windows

我正在尝试创建一个名为foo的注册表项,如果它不存在,如果它确实存在我试图读取它的值。如果值> 0,我试图将其减1,以便跟踪某个软件的试用情况,但我收到此错误:

$ ruby _RUNME.rb
no key exists
c:/Ruby200-x64/lib/ruby/2.0.0/win32/registry.rb:261:in `call': no implicit conversion of String into Integer (TypeError)
    from c:/Ruby200-x64/lib/ruby/2.0.0/win32/registry.rb:261:in `CreateKey'
    from c:/Ruby200-x64/lib/ruby/2.0.0/win32/registry.rb:412:in `create'
    from c:/Ruby200-x64/lib/ruby/2.0.0/win32/registry.rb:503:in `create'
    from _RUNME.rb:18:in `rescue in <main>'
    from _RUNME.rb:5:in `<main>'

我的代码是:

begin
Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\foo') do |reg|
    value = reg['foo'] 
    if(value.to_i>0)
        reg['foo'] = value.to_i-1
    else 
        puts "no trial uses left"
        sleep(10) 
        Kernel.exit(false)
    end
end 
rescue
    puts "no key exists"
      Win32::Registry::HKEY_CURRENT_USER.create("software\\foo","Win32::Registry::KEY_ALL_ACCESS")
    Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\foo') do |reg|
    reg['foo']="55" 
    puts "wrote new key foo with value 55"
end
end

使用Ruby 2.0.0版

0 个答案:

没有答案