← 記事

Rubyを使ってWindowsにインストールされているプログラムの一覧を取得する方法

Windowsマシンにインストールされているソフトウェアの情報を取得する必要があるプロジェクトに取り組んでいるなら、Rubyでこの情報をプログラムから取得する方法を知っておくと便利です。その方法の一つが、Windows Management Instrumentation(WMI)インターフェースを使うことです。

注意:この方法で見つかるのは、Windowsインストーラーでインストールされたプログラムだけです。
ほかの方法については、こちらを参照してください:“Please stop using win32product”

WMIを簡単に操作できるgemの一つがwin32oleです。win32oleを使えば、WMIインターフェースに接続し、クエリーを実行して、Windowsマシンにインストールされているプログラムの情報を取得できます。

win32oleを使って、インストールされているプログラムの名前、バージョン、ベンダーを含む一覧を取得する例を示します。

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

このコードはWMIインターフェースに接続し、インストールされている各プログラムの名前、バージョン、ベンダーを取得するクエリーを実行します。