我在我的应用程序中使用ruby 32位。我使用“win32 / registry”来读取注册表项。
当我使用
时reg = Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\app_path')
reg_typ, reg_val = reg.read('somekey')
默认情况下读取路径
HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ APP_PATH
现在有些应用程序是64位,我想检查
HKEY_LOCAL_MACHINE \ SOFTWARE \ APP_PATH
小时。但是,默认情况下它总是尝试在“WOW6432Node”下找到
有关我缺少什么的建议以及如何从ruby读取32位和64位应用程序的注册表?
答案 0 :(得分:2)
显然win32/registry
没有定义用于执行此操作的KEY_WOW64_{32,64}KEY
flags。但由于Ruby允许重新打开类和模块,因此您可以轻松地自行添加它们:
module Win32::Registry::Constants
KEY_WOW64_64KEY = 0x0100
KEY_WOW64_32KEY = 0x0200
end
要读取64位密钥:
reg = Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\app_path',
Win32::Registry::KEY_READ | Win32::Registry::KEY_WOW64_64KEY)
要读取32位密钥:
reg = Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\app_path',
Win32::Registry::KEY_READ | Win32::Registry::KEY_WOW64_32KEY)
您可以在Ruby's bug tracker上打开功能请求(如果您愿意,我可以为您执行此操作)。