ホームページ >バックエンド開発 >Golang >Go から WMI を簡単にクエリするにはどうすればよいですか?

Go から WMI を簡単にクエリするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-28 18:38:11342ブラウズ

How Can I Easily Query WMI from Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。