Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyoal Instrumen Pengurusan Windows (WMI) daripada Go menggunakan Objek COM?

Bagaimana untuk Menyoal Instrumen Pengurusan Windows (WMI) daripada Go menggunakan Objek COM?

Linda Hamilton
Linda Hamiltonasal
2024-11-29 16:50:11519semak imbas

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

Menyiasat WMI daripada Go: Menggunakan COM Objects

WMI (Windows Management Instrumentation) menyediakan antara muka piawai untuk mengakses maklumat pengurusan dan konfigurasi pada Windows sistem. Dalam Go, adalah mungkin untuk menanyakan WMI menggunakan rangka kerja COM (Model Objek Komponen).

Menggunakan Pakej "github.com/StackExchange/wmi"

Yang disyorkan pendekatan adalah untuk menggunakan pakej "github.com/StackExchange/wmi", yang menyediakan pembungkus yang stabil dan komprehensif untuk Operasi WMI dalam Go. Pakej ini memanfaatkan penyelesaian yang dibincangkan dalam jawapan yang diterima, memudahkan proses memulakan COM dan melaksanakan pertanyaan WMI.

Mengarang Pertanyaan WMI

Untuk mengarang pertanyaan WMI, gunakan fungsi "ExecQuery" yang disediakan oleh pakej. Contohnya:

import "github.com/StackExchange/wmi"

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

Melaksanakan Pertanyaan

Setelah pertanyaan dikarang, laksanakannya menggunakan fungsi "Cari":

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

Mengambil Keputusan

Fungsi "Cari" mengembalikan sekeping objek "wmi.Record", setiap satu mewakili contoh yang sepadan daripada ruang nama WMI. Untuk mengakses sifat rekod:

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

    fmt.Println(name.Value)
}

Kod Contoh

Berikut ialah contoh program lengkap yang menunjukkan cara untuk menanyakan WMI untuk nama proses:

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

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Instrumen Pengurusan Windows (WMI) daripada Go menggunakan Objek COM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn