我想在Windows机器上查询所有已安装的软件。我找到了另一篇类似here的帖子。
我稍微修改了代码:
require 'win32/registry'
Win32::Registry::HKEY_LOCAL_MACHINE.open('Software\Microsoft\Windows\CurrentVersion\Uninstall') do |reg|
reg.each_key do |key1,key2|
k = reg.open(key1)
puts k["DisplayName"] rescue "?"
puts k["DisplayVersion"] rescue "?"
puts k["Publisher"] rescue "?"
puts k["URLInfoAbout"] rescue "?"
puts
end
end
这给我一些信息,但我想获得有关该软件的其他信息。例如,拥有安装日期,许可证信息等非常棒。
我对红宝石很新。我怎么知道k的索引或键是什么?显然,“DisplayName”是一个,但我如何找到其他人?有没有更好的方法来以编程方式获取此信息?
答案 0 :(得分:3)
如果您只想了解有关该软件的完整信息,可以使用:
require 'win32/registry'
require 'pp' # for pretty print
Win32::Registry::HKEY_LOCAL_MACHINE.open('Software\Microsoft\Windows\CurrentVersion\Uninstall') do |reg|
reg.each_key do |key1,key2|
k = reg.open(key1)
pp k.inject([]) {|info, data| info << data}
end
end
你会得到这样的东西:
["UninstallString",
1,
"\"C:\\WINDOWS\\$NtUninstallKB2393802$\\spuninst\\spuninst.exe\""],
["TSAware", 4, 1],
["NoModify", 4, 1],
["InstallDate", 1, "20110313"],
["Publisher", 1, "Microsoft Corporation"],
["NoRepair", 4, 1],
["HelpLink", 1, "http://support.microsoft.com?kbid=2393802"],
["URLInfoAbout", 1, "http://support.microsoft.com"],
["DisplayVersion", 1, "1"],
["ParentKeyName", 1, "OperatingSystem"],
["ParentDisplayName",
等等。