コマンドプロンプトでインストールソフト一覧を取得する(64bitOS対応版)


2016年9月1日

はじめまして、ヤスです。
調べるのに時間がかかった情報や(英語サイトしか情報がない情報など)、情報がないので自作したモノなどを紹介していきます。

動作検証環境:Microsoft Windows 64bit [Version 6.1.7601]

WindowsPCのインストールソフトを取得したい

レジストリ情報からインストールソフトを取得

Windowsマシンのインストールソフトの一覧を取得する必要があったので、コマンドプロンプト(バッチファイル)で対応しようと思い、
regコマンド(reg query)でレジスト内のUninstall情報から取得できることがわかりました。

Uninstall情報のあるレジストリパス

・HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

OSが64bit版の場合は、Uninstall情報のあるレジストリパスはもう一箇所あるので注意!

上記のレジストリパスから情報を取得して、実際にインストールされているソフトと比較した所、なぜかソフトの数が合わない・・・。
調べた結果、どうやらOSが64bit版の場合、上記のパスは64bit対応のソフト情報のみ格納されてようです。
32bit対応のソフト情報は別の箇所に保存されているので、追加で情報を取得する必要があります。

32bit対応のUninstall情報のあるレジストリパス

・HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

インストールソフト取得バッチファイル

64bitOSに対応したインストールソフトを取得するバッチファイル(.bat形式で保存)は以下になります。

ソースコード説明

・reg queryで取得できる情報のなか、ソフト名の記載されているDisplayNameの項目のみ取得しています
・セキュリティ用の更新ソフトは不要なので、「更新、修正、KB」などが含まれている場合は無視しています
・64bitと32bitの両方に対応している場合、ソフト名が重複するので削除しています

[改訂新版]Windowsコマンドプロンプトポケットリファレンス
山近 慶一
技術評論社
売り上げランキング: 38,925