Go からの WMI のクエリ: COM オブジェクトの使用
WMI (Windows Management Instrumentation) は、Windows 上の管理および構成情報にアクセスするための標準化されたインターフェイスを提供しますシステム。 Go では、COM (コンポーネント オブジェクト モデル) フレームワークを使用して WMI をクエリできます。
「github.com/StackExchange/wmi」パッケージを使用する
推奨このアプローチは、「github.com/StackExchange/wmi」パッケージを利用することです。このパッケージは、WMI 操作の安定した包括的なラッパーを提供します。 行く。このパッケージは、受け入れられた回答で説明されているソリューションを活用し、COM の初期化と WMI クエリの実行のプロセスを簡素化します。
WMI クエリの作成
WMI クエリを作成するには、パッケージが提供する「ExecQuery」関数を使用します。例:
import "github.com/StackExchange/wmi" func main() { query := wmi.CreateQuery(&wmi.Query{ Namespace: `root\cimv2`, Query: `SELECT * FROM Win32_Process`, })
クエリの実行
クエリが作成されたら、「検索」機能を使用して実行します:
results, err := query.Find() if err != nil { // Handle error }
結果を取得しています
「Find」関数は、「wmi.Record」オブジェクトのスライスを返します。各オブジェクトは、WMI 名前空間からの一致するインスタンスを表します。レコードのプロパティにアクセスするには:
for _, record := range results { name, err := record.Property("Name") if err != nil { // Handle error } fmt.Println(name.Value) }
サンプル コード
次に、WMI にプロセス名をクエリする方法を示す完全なサンプル プログラムを示します。
package main import ( "fmt" "github.com/StackExchange/wmi" ) func main() { query := wmi.CreateQuery(&wmi.Query{ Namespace: `root\cimv2`, Query: `SELECT Name FROM Win32_Process`, }) results, err := query.Find() if err != nil { // Handle error } for _, record := range results { name, err := record.Property("Name") if err != nil { // Handle error } fmt.Println(name.Value) } }
以上がCOM オブジェクトを使用して Go から Windows Management Instrumentation (WMI) をクエリする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。