2010-10-30 4 views
1

Je sais que l'utilisation de la requête wmi WIN32_product on peut lire la liste des applications installées mais la liste est différente de la liste des programmes ajouter/supprimer sous le panneau de contrôle. Une autre approche serait de lire Software\Microsoft\Windows\CurrentVersion\Uninstall dans le registre de Windows?Comment obtenir la liste des applications installées en utilisant Ruby dans Windows?

J'utilise les quelques lignes de code Ruby suivantes pour le faire, mais il ne fonctionne pas

Pour cet exemple, je suis à la recherche d'un logiciel sous le nom de marque (il montre quand je vais à travers regedit dans mon windows 7 PC)

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

message d'erreur après l'exécution de ce morceau de code

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

Quel est le problème avec ce morceau de code?

+0

duplication possible de [logiciel Query installé sur windows avec ruby] (http://stackoverflow.com/questions/5424911/query-installed-software-on-windows-with-ruby) –

Répondre

2
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 

Bien méfiez-vous de: 'Software \ Wow6432Node \ Windows \ CurrentVersion \ Uninstall'

0
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 

Vérifiez cette link pour une explication de la façon dont le registre fonctionne sur 64 plates-formes de bits

Questions connexes