Heim >Backend-Entwicklung >Golang >Wie kann ich WMI einfach von Go aus abfragen?

Wie kann ich WMI einfach von Go aus abfragen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-28 18:38:11344Durchsuche

How Can I Easily Query WMI from Go?

WMI von Go aus abfragen

Um WMI-Abfragen von Go aus auszuführen, ist die Verwendung von DLL-Aufrufen möglich. Allerdings kann es entmutigend sein, sich in der Komplexität COM-basierter Windows-APIs zurechtzufinden. Glücklicherweise gibt es alternative Lösungen, die einen einfacheren Ansatz bieten.

Eine empfohlene Lösung ist die Nutzung des GitHub-Repositorys von StackExchange/wmi. Dieses Paket kapselt die in der akzeptierten Antwort beschriebenen Techniken und bietet eine praktische Schnittstelle für WMI-Abfragen.

Verwendung des StackExchange/wmi-Pakets

Hier ist ein Codeausschnitt, der zeigt, wie das geht So verwenden Sie das StackExchange/wmi-Paket:

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))
        }
}

Dieses Beispiel wird abgerufen Informationen über laufende Prozesse, einschließlich ihrer Prozess-IDs und Namen. Das StackExchange/wmi-Paket verarbeitet die Feinheiten von COM und WMI und vereinfacht den Abfrageprozess für Go-Entwickler.

Das obige ist der detaillierte Inhalt vonWie kann ich WMI einfach von Go aus abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn