Как получить список установленных приложений, использующих Ruby в Windows? - PullRequest
1 голос
/ 30 октября 2010

Я знаю, что с помощью запроса wmi WIN32_product можно прочитать список установленных приложений, но этот список отличается от списка добавления / удаления программ в панели управления. Другой подход будет читать Software\Microsoft\Windows\CurrentVersion\Uninstall в реестре Windows?

Я использую следующие несколько строк кода ruby ​​для этого, но он не работает

В этом примере я ищу программное обеспечение под названием Branding (оно отображается, когда я запускаю regedit на моем компьютере с Windows 7)

Win32::Registry::HKEY_LOCAL_MACHINE.open('Software\Microsoft\Windows\CurrentVersion\Uninstall\Branding') do |reg|
  reg_typ, reg_val = reg.read('')
  return reg_val
end

Сообщение об ошибке после выполнения этого кода

win32/registry.rb:528:in `open': The system cannot find
the file specified. (Win32::Registry::Error)
        from win32/registry.rb:608:in `open'

Что не так с этим фрагментом кода?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010
Win32::Registry::HKEY_LOCAL_MACHINE.open(
  'Software\Microsoft\Windows\CurrentVersion\Uninstall'
) do |reg|
  reg.each_key do |key|
    k = reg.open(key)

    puts key
    puts k["DisplayName"]    rescue "?"
    puts k["DisplayVersion"] rescue "?"
    puts k["Publisher"]      rescue "?"
    puts k["URLInfoAbout"]   rescue "?"
    puts
  end
end

Хотя остерегайтесь: 'Software \ Wow6432Node \ Windows \ CurrentVersion \ Uninstall'

0 голосов
/ 21 апреля 2011
key = 'Software\Microsoft\Windows\CurrentVersion\Uninstall'
reg_type = Win32::Registry::Constants::KEY_READ | Windows::Registry::KEY_WOW64_64KEY

Win32::Registry.open(Win32::Registry::HKEY_LOCAL_MACHINE,key,reg_type) do |reg|
 reg.each_key do |key|
     k = reg.open(key)

     puts key
     puts k["DisplayName"]    rescue "?"
     puts k["DisplayVersion"] rescue "?"
     puts k["Publisher"]      rescue "?"
     puts k["URLInfoAbout"]   rescue "?"
     puts
   end
 end

Проверьте эту ссылку для объяснения того, как работает реестр на 64-битных платформах

...