Raison d’être

電脳硬化症気味な日記です。まとまった情報は wiki にあります。

2015.5.20 (Wednesday)

at 16:39  

Windowsにインストールされているソフトウェアを一覧する   [ICTメモ]

 Windowsでコンパネの"プログラムと機能"を選ぶと、アンインストール可能なソフトウェアの一覧が表示される。資産管理などのために、この一覧をテキスト化したい。しかし、資産管理ソフトなんて大仰な仕組みは導入したくない。

 Googleと、まず、それ専用のツールが出てきた。でも、この目的だけのために、ソフトウェアを新規導入するのは嫌だ。

 次に、PowerShellを使う方法が検索にヒットした。WMIからWin32_Productクラスを抽出するらしい。
 しかし、64bit環境で出力されるソフトウェア一覧は"プログラムと機能"の一覧とは異なった。追加されているものもあれば、一覧から消えてしまったソフトウェアも存在する。出力される"Name"もコンパネに表示される名称とは異なる。これはダメ。

 更に検索すると、Win32_Productクラスではなく、レジストリのアンインストール情報自体から一覧を取得する手法があった。私の望みは、この手法で達成された。

$path = “\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”
$wow = “HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall”
$patharray = ("HKLM:” + $path),("HKCU:” + $path)
if(Test-Path $wow){$patharray += $wow}

Get-ChildItem -Path $patharray |
%{Get-ItemProperty $_.PsPath} |
?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} |
sort displayname |
select DisplayName,DisplayVersion,Publisher,URLInfoAbout,URLUpdateInfo,InstallDate,InstallLocation,UninstallString,EstimatedSize,Comments |
Export-Csv installed_softwares.csv -encoding Default -NoTypeInformation

 しかし、これでも"プログラムと機能"の一覧と完全には一致していない。PowerShellで出力した一覧には、"プログラムと機能"にはない名称がいくつか見当たる。私PCだと「Intel® Management Engine Components」「Intel® Processor Graphics」「Intel® USB 3.0 eXtensible Host Controller Driver」「Synaptics WBF DDK 5011」などが増えていた。

 また、Windows Installerを使わず、手動で導入したソフトウェアは、当然、一覧には出力されない。資産管理上必要なら、自主的に追記してもらう他ない。


« FIA・エクレストン・F1戦略グル…
信長の野望 201X »
  trackback:    



Go back.