從 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中文網其他相關文章!