ひとこと

― 今日のひとこと ―
気付けば前回更新してから2年以上経ってた
(2023.10.25)

2015年7月24日金曜日

C# Windowsプログラミングおぼえがき

■インストール済みソフトウェア一覧取得
PCにインストールしたソフトの一覧がほしいとき。
WMIでは取得できないものも多々あると思われるので、レジストリから情報を得る。

1.Uninstallからソフトウェア名を取得
uninstallのサブキーのうちDisplayNameが記載されたものを取得する。
これがコントロールパネルの「プログラムのアンインストール」で表示されるものだと思われる。
ちなみにUninstallではインストール日時やバージョンなども取得できる。

2.App Pathsから実行ファイル名を取得
uninstallからは実行ファイル名を取得できないので、
uninstallでInstallLocationを取得した上でApp Pathsのサブキー順次取得し、
そのPathの値がInstallLocationで取得したものと一致した場合に既定値を実行ファイルパスとして取得する。

64bitOSと32bitOSではレジストリパスが若干異なるので注意。
64bitの場合はSoftwareの直下にWow6432nodeというキーが入る。


■インストール済みセキュリティソフト一覧取得
WMIのAntiVirusProductを使う。XPより後のOSではSecurityCenter2を指定すること。
取得できるproductStateは、その製品にどんな機能があるかを表す3Bytesの値。
値ごとの具体的な意味はこちら
別に製品の設定で機能のON/OFFを変えてもそれが反映されるわけではないので注意。
製品の実際の設定値を知るには製品ごとのレジストリを読むしかない。


■Windows Defenderについて
ウィルス定義ファイルの更新タイミングはざっと見た感じだと次の3パターンがある。

①WindowsUpdate
②スキャン直前
③定期チェック

定期チェックはWindows8以降だけ対応しているのかも。Windows7では設定できなさそうだった。
スキャン直前に更新チェックするかどうかは設定次第なんだけど、
Windows7までではそれを除くと更新タイミングはWindowsUpdateだけということに・・・

そしてレジストリを眺めただけではどんな設定項目があるのか分かりづらい。
手動で設定してはじめて作成されるキーとかあるし。
他のアンチウィルスソフト使ってたら設定いじれないし。