首頁 >後端開發 >Golang >如何從 Go 輕鬆查詢 WMI?

如何從 Go 輕鬆查詢 WMI?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-28 18:38:11279瀏覽

How Can I Easily Query WMI from Go?

從 Go 查詢 WMI

要從 Go 執行 WMI 查詢,利用 DLL 呼叫是可行的。然而,駕馭基於 COM 的 Windows API 的複雜性可能令人望而生畏。幸運的是,有一些替代解決方案可以提供更直接的方法。

一個建議的解決方案是利用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn