Go からの WMI クエリ
Go から WMI クエリを実行するには、DLL 呼び出しを利用することが可能です。ただし、COM ベースの Windows API の複雑さを理解するのは困難な場合があります。幸いなことに、より直接的なアプローチを提供する代替ソリューションがあります。
推奨されるソリューションの 1 つは、StackExchange/wmi による GitHub リポジトリを活用することです。このパッケージは、受け入れられた回答で概説されている手法をカプセル化し、WMI クエリに便利なインターフェイスを提供します。
StackExchange/wmi パッケージの使用
次のコード スニペットは、その方法を示しています。 StackExchange/wmi パッケージを使用するには:
package main import ( "context" "fmt" "log" "github.com/StackExchange/wmi" ) func main() { query := wmi.CreateQuery(&wmi.Query{ Namespace: "root\cimv2", Query: "SELECT * FROM Win32_Process", Projection: []string{"Caption", "ProcessId"}, }) processes, err := query.Execute(context.Background()) if err != nil { log.Fatal(err) } fmt.Printf("%-5s%-20v", "PID", "Name") fmt.Println() for _, p := range processes { fmt.Printf("%-5v%-20v\n", p.Properties["ProcessId"].Value.Value().(uint32), p.Properties["Caption"].Value.Value().(string)) } }
この例プロセス ID や名前など、実行中のプロセスに関する情報を取得します。 StackExchange/wmi パッケージは COM と WMI の複雑さを処理し、Go 開発者のクエリ プロセスを簡素化します。
以上がGo から WMI を簡単にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。