繁体   English   中英

Ruby-如何从32位红宝石读取32位和64位应用程序的注册表项

[英]Ruby - how to read registry keys for 32 bit and 64 bit applications from 32 bit ruby

我在应用程序中使用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

H。 但是,默认情况下,它始终尝试在“ WOW6432Node”下查找

关于我所缺少的任何建议,以及如何从ruby中读取32位和64位应用程序的注册表?

显然, win32/registry没有定义用于执行此操作的KEY_WOW64_{32,64}KEY标志 但是由于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的错误跟踪器上打开该功能的请求(或者,如果您愿意,我也可以为您完成)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM