今回は、ファイルの情報を取得してみます。動機としましては開発に必要となるツール類のバージョンが知りたかったからです。
ファイル情報を取得する
WMIを使用してNVIDIA コントロールパネルの情報を取得する
今回はCIM_DataFileクラスを使用し取得します。
サンプルとして NVIDIAのコントロールパネルのバージョンを取得しましょう。
以前作成した関数にクエリーを渡し、情報を取得します。
SELECT
Caption, Version
FROM
CIM_DataFile
WHERE
Name='C:\\\\Program Files\\\\NVIDIA Corporation\\\\Control Panel Client\\\\nvcplui.exe'
// 取得したいプロパティをクエリーで指定する
var query = "SELECT Caption, Version FROM CIM_DataFile WHERE Name='C:\\\\Program Files\\\\NVIDIA Corporation\\\\Control Panel Client\\\\nvcplui.exe'";
var props = getWMIProperties(query);
if( props.length > 0 ){
var info = props[0];
var caption = info.Caption; // c:\program files\nvidia corporation\control panel client\nvcplui.exe
var varsion = info.Version; // 8.1.940.0
}
自身もハマってしまったのですが、注意すべきポイントがあります。
WMI Query Language (WQL) のWhereでパスを指定する際に、「¥」を2個重ねる必要があります。
VBScriptで指定する場合は気にはなりませんが、JavaScript、JScriptは文字列に「¥」を表示しようと思ったら2個並べますよね。
つまり必然的にパスの区切り文字に「¥¥¥¥」を使用する事になります。
これハマったんですよ。その時の事は こちらから どうぞ。
CIM_DataFileクラス
CIM_DataFile には他にも多くのプロパティが存在します。
説明 | プロパティ名 | 参考地 |
---|---|---|
ドライブ | Drive | c: |
製造元 | Manufacturer | NVIDIA Corporation |
ファイル名 | FileName | nvcplui |
拡張子 | Extension | exe |
ファイルタイプ | FileType | Application |
インストール日付 | InstallDate | 20170717154715.439765+540 |
詳しくはSELECTに「*」を指定しデバッガーで止めてプロパティを確認した方が確実です。
参考リンク
MSDN : CMI_DataFile class
https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/cim-datafile