Heim > Backend-Entwicklung > Golang > Wie frage ich Windows Management Instrumentation (WMI) von Go aus mithilfe von COM-Objekten ab?

Wie frage ich Windows Management Instrumentation (WMI) von Go aus mithilfe von COM-Objekten ab?

Linda Hamilton
Freigeben: 2024-11-29 16:50:11
Original
576 Leute haben es durchsucht

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

WMI von Go aus abfragen: COM-Objekte verwenden

WMI (Windows Management Instrumentation) bietet eine standardisierte Schnittstelle für den Zugriff auf Verwaltungs- und Konfigurationsinformationen unter Windows Systeme. In Go ist es möglich, WMI mithilfe des COM-Frameworks (Component Object Model) abzufragen.

Verwendung des Pakets „github.com/StackExchange/wmi“

Empfohlen Der Ansatz besteht darin, das Paket „github.com/StackExchange/wmi“ zu verwenden, das einen stabilen und umfassenden Wrapper für WMI-Vorgänge in Go bereitstellt. Dieses Paket nutzt die in der akzeptierten Antwort besprochene Lösung und vereinfacht den Prozess der Initialisierung von COM und der Ausführung von WMI-Abfragen.

Verfassen einer WMI-Abfrage

Um eine WMI-Abfrage zu verfassen, Verwenden Sie die vom Paket bereitgestellte Funktion „ExecQuery“. Zum Beispiel:

import "github.com/StackExchange/wmi"

func main() {
    query := wmi.CreateQuery(&wmi.Query{
        Namespace: `root\cimv2`,
        Query:     `SELECT * FROM Win32_Process`,
    })
Nach dem Login kopieren

Ausführen der Abfrage

Sobald die Abfrage zusammengestellt ist, führen Sie sie mit der Funktion „Suchen“ aus:

results, err := query.Find()
if err != nil {
    // Handle error
}
Nach dem Login kopieren

Ergebnisse abrufen

Die Funktion „Suchen“ gibt einen Ausschnitt von zurück „wmi.Record“-Objekte, die jeweils eine passende Instanz aus dem WMI-Namespace darstellen. So greifen Sie auf die Eigenschaften eines Datensatzes zu:

for _, record := range results {
    name, err := record.Property("Name")
    if err != nil {
        // Handle error
    }

    fmt.Println(name.Value)
}
Nach dem Login kopieren

Beispielcode

Hier ist ein vollständiges Beispielprogramm, das zeigt, wie WMI nach Prozessnamen abgefragt wird:

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)
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie frage ich Windows Management Instrumentation (WMI) von Go aus mithilfe von COM-Objekten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage