レジストリキーを検証するために使用しようとしている次のスニペットがあります(OSはWindows 2008R2またはWin7です)
def value_exists?(path,key)
reg_type = Win32::Registry::KEY_READ
Win32::Registry::HKEY_LOCAL_MACHINE.open(path, reg_type) do |reg|
begin
regkey = reg[key]
return true
rescue
return false
end
end
end
次の2つのコマンドを実行すると、出力が期待されます(私の場合、falseが返されます)。
puts(value_exists?("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\",'PendingFileRenameOperations'))
puts(value_exists?("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Component Based Servicing\\",'RebootPending'))
私が実行するとき
puts(value_exists?("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\",'RebootRequired'))
次のエラーが発生します
C:/Ruby187/lib/ruby/1.8/win32/registry.rb:528:in `open': The system cannot find the file specified. (Win32::Registry::Error)
from C:/Ruby187/lib/ruby/1.8/win32/registry.rb:608:in `open'
from ./reg2.rb:7:in `value_exists?'
from ./reg2.rb:21
私はこの仕事をするために何をすべきか本当に理解していません。システムがx64であり、正しい場所でキーを見つけられないことに関係しているのではないかと思います。しかし、これを改善するために何をする必要があるのかわかりません。
よろしくお願いします!