Interrogation WMI depuis Go
Pour exécuter des requêtes WMI depuis Go, il est possible d'utiliser des appels DLL. Cependant, naviguer dans la complexité des API Windows basées sur COM peut s'avérer intimidant. Heureusement, il existe des solutions alternatives qui offrent une approche plus simple.
Une solution recommandée consiste à exploiter le référentiel GitHub de StackExchange/wmi. Ce package encapsule les techniques décrites dans la réponse acceptée, offrant une interface pratique pour les requêtes WMI.
Utilisation du package StackExchange/wmi
Voici un extrait de code qui montre comment pour utiliser le package 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)) } }
Cet exemple récupérera des informations sur l'exécution processus, y compris leurs ID et noms de processus. Le package StackExchange/wmi gère les subtilités de COM et WMI, simplifiant ainsi le processus d'interrogation pour les développeurs Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!