← Articles

Obtenir la liste des programmes installés sous Windows avec Ruby

Si vous travaillez sur un projet qui nécessite des informations sur les logiciels installés sur une machine Windows, il peut être utile de savoir comment les récupérer par programmation avec Ruby. Une façon de le faire consiste à utiliser l’interface Windows Management Instrumentation (WMI).

Attention : cette méthode ne trouve que les programmes installés via Windows Installer.
Pour d’autres méthodes, voir ici : « Please stop using win32product »

Une gem qui permet d’interagir facilement avec WMI est win32ole. Avec win32ole, on peut se connecter à l’interface WMI et exécuter des requêtes pour obtenir des informations sur les programmes installés sur une machine Windows.

Voici un exemple d’utilisation de win32ole pour obtenir la liste des programmes installés, avec leur nom, leur version et leur éditeur :

require 'win32ole'

wmi = WIN32OLE.connect("winmgmts://")
programs = wmi.ExecQuery("SELECT Name, Version, Vendor FROM Win32_Product")

programs.each do |program|
  puts "Name: #{program.Name}"
  puts "Version: #{program.Version}"
  puts "Vendor: #{program.Vendor}"
  puts ""
end

Ce code se connecte à l’interface WMI et exécute une requête qui récupère le nom, la version et l’éditeur de chaque programme installé.