HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
サブキーをすべて取得して、それぞれの値(名前)がDisplayNameとPublisherをのものをSelectすれば「アプリケーションの追加と削除」に表示されるものと同じものが取得できるっぽい。
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | %{Get-ItemProperty $_.PsPath} | sort displayname | select DisplayName,Publisher |
<結果>
<アプリケーションの追加と削除>
比べてみると、いくつか余計なものが含まれている。
アプリケーションの追加と削除では「更新プログラム」は別途表示されているのと、システムコンポーネントが除外されているようだ。
レジストリーを眺めてそれっぽいプロパティ(systemcomponentとparentkeyname)でフィルターしてみる。
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | %{Get-ItemProperty $_.PsPath} | ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} | sort displayname | select DisplayName,Publisher |
だいたいよさそうだが、一部(Google Chrome)のアプリケーションはHKLMではなくHKCUに情報がある。
そこで両方のキーから取ってくるように修正。
$path = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $path1 = "HKLM:" + $path $path2 = "HKCU:" + $path Get-ChildItem -Path ($path1,$path2) | %{Get-ItemProperty $_.PsPath} | ?{$_.systemcomponent -ne 1 -and $_.parentkeyname -eq $null} | sort displayname | select DisplayName,Publisher |
これで、一応「アプリケーションの追加と削除」に表示されるものと一致した。
あくまでも私の環境で一致しただけなのですべての環境でOKかは分からないが当たらずとも遠からずだろう。
--
0 件のコメント:
コメントを投稿