ホームページ >バックエンド開発 >Golang >COM オブジェクトを使用して Go から Windows Management Instrumentation (WMI) をクエリする方法は?

COM オブジェクトを使用して Go から Windows Management Instrumentation (WMI) をクエリする方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 16:50:11587ブラウズ

How to Query Windows Management Instrumentation (WMI) from Go using COM Objects?

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

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