WMIとは?

Windows OSにおけるシステム管理のための共通基盤アーキテクチャであり、システムに関するさまざまなインベントリ情報(ハードウェアやソフトウェアの情報といったシステム情報のほか、プロセスやサービス、ユーザーやグループといった動的な情報まで)を、取得・管理する機能を提供している。Windows 2000以降のOSではこのWMIが標準で実装されている。

参考

 

WMIクラスの確認

コマンドラインで「wbemtest」
コマンドラインで「wmic」
その他、各種ツールがある。
・WMICodeCreator
・PowerShellScriptOMatic

 

VBSでのサンプル

WMIエラー一覧

https://msdn.microsoft.com/en-us/library/aa394559(v=vs.85).aspx

WbemScripting.SWbemLocator

コンピューターに登録されているプログラム識別子の一覧を取得する方法はありますか

参照設定とCreateObjectの対応リスト

http://www.thom.jp/vbainfo/refsetting.html

多くの場合、ProgID=ライブラリ名.オブジェクト名であるが、必ずしもそうでないので注意が必要
CreateObjectに渡す引数はProgIDである。
一方、オブジェクトは、ライブラリ名.オブジェクト名となる。
下記の場合、「WbemScripting」がライブラリ名、「SWbemLocator」がオブジェクト名となる。
Dim wmiLocator As WbemScripting.SWbemLocator

 

レジストリの”Classes”に登録されていない(プログラムIDが登録されていない)オブジェクトの生成方法

クラスIDを直接指定して呼び出す
MSForms.DataObject
CreateObject(“new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}”)

 

COM DLL の CLSID(クラスID)を調べる方法 –

クラスIDは DLL ファイル内に埋め込まれている。
一番最後のパートだけが左から右の順で、他はバイト順が逆になっている。

クラスIDを調べるVBプログラム:
Option Explicit
Private Sub Form_Load()
Dim t As TypeLibInfo
Set t = TLI.TypeLibInfoFromFile(“c:\plugin.dll”)
MsgBox t.Guid & vbCrLf & t.Name

Dim s As SearchItem
For Each s In t.GetTypes
MsgBox t.Name & “.” & s.Name
Next
End Sub
これをコンパイルする前に[参照設定]で TypeLib Information を追加すること。