我需要添加一个新的双字(32位)值' 1001'在以下注册表路径中:
path = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3\\"
添加后,注册表结构应如下所示:
如何使用ruby实现相同的目标?
答案 0 :(得分:1)
这是一种修改用户环境变量的方法,你试过这个吗?
require 'win32/registry.rb'
path = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3\\"
Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_WRITE) do |reg|
reg[path] = '1001'
end
该文档还说明您应该注销并重新登录或广播WM_SETTINGCHANGE消息,以便对应用程序进行更改。这就是如何在Ruby中完成广播:
require 'Win32API'
SendMessageTimeout = Win32API.new('user32', 'SendMessageTimeout', 'LLLPLLP', 'L')
HWND_BROADCAST = 0xffff
WM_SETTINGCHANGE = 0x001A
SMTO_ABORTIFHUNG = 2
result = 0
SendMessageTimeout.call(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 'Environment', SMTO_ABORTIFHUNG, 5000, result)
您可以查看此original answer和此usefull article。
答案 1 :(得分:1)
以下几行解决了我的问题。
Win32::Registry::HKEY_CURRENT_USER.create(path) do |reg|
reg.write('1001', Win32::Registry::REG_DWORD, 0)
end
这里我在注册表中为新创建的dword(32位)值'1001'设置值0.