我正在尝试创建一个名为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版