Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das folgende Codebeispiel verwendet die System.Management-Auflistungsklassen, um die Umgebungsvariablen auf einem Computer aufzulisten. In diesem Beispiel können für einige Parameter die Standardwerte übernommen werden, da das Beispiel die Informationen aus dem lokalen Computer erhält. Das Beispiel gibt eine Auflistung aller Objekte für die angegebene Klasse (Win32_Environment) zurück. Nach dem Abrufen listet der Code die Auflistung mit Hilfe der foreach-Anweisung auf und zeigt den Namen und den Wert jeder Variablen in der Auflistung an. Entwickler, die mit der Skripterstellungs-API von WMI vertraut sind, werden einige Ähnlichkeiten feststellen. Es werden zwei verschiedene Variationen demonstriert: Die erste verwendet die ManagementObjectSearcher-Klasse, die mit der einfachsten Form einer Abfrage verwendet wird, welche im Wesentlichen eine vollständige Enumeration darstellt. Die zweite erhält das Klassenobjekt für Win32_Environment und verwendet die GetInstances()-Methode zum Auflisten der Instanzen.
using System;
using System.Management;
// This example demonstrates how to perform a synchronous instance enumeration.
public class EnumerateInstances {
public static int Main(string[] args) {
// Build a query for enumeration of Win32_Environment instances
SelectQuery query = new SelectQuery("Win32_Environment");
// Instantiate an object searcher with this query
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
// Call Get() to retrieve the collection of objects and loop through it
foreach (ManagementBaseObject envVar in searcher.Get())
Console.WriteLine("Variable : {0}, Value = {1}",
envVar["Name"],envVar["VariableValue"]);
return 0;
}
}
[Visual Basic]
Imports System
Imports System.Management
' This example demonstrates how to perform a synchronous instance enumeration.
Public Class EnumerateInstances
Overloads Public Shared Function Main(args() As String) As Integer
' Build a query for enumeration of Win32_Environment instances
Dim query As New SelectQuery("Win32_Environment")
' Instantiate an object searcher with this query
Dim searcher As New ManagementObjectSearcher(query)
' Call Get() to retrieve the collection of objects and loop through it
Dim envVar As ManagementBaseObject
For Each envVar In searcher.Get()
Console.WriteLine("Variable : {0}, Value = {1}", _
envVar("Name"), envVar("VariableValue"))
Next envVar
Return 0
End Function
End Class
Der Zugriff auf Verwaltungsinformationen erfolgt meist in verteilten Umgebungen und kann unter Umständen große Datenmengen miteinbeziehen. Um dies zu unterstützen, können Verwaltungsoperationen auch asynchron durchgeführt werden. Im folgenden Beispiel wird gezeigt, wie alle Dienste auf einem Computer in einem asynchronen Codierungsmuster aufgelistet werden. Die zum asynchronen Aufrufen einer Operation verwendete Methode entspricht einer Überladung der synchronen Methode, die einen zusätzlichen Parameter des Typs ManagementOperationObserver verwendet, um Rückrufe für Ergebnisse zu behandeln. Dieses Objekt definiert Ereignisse für die Benachrichtigung von Ergebnissen und Vervollständigungen, für die Handler abonniert werden, die ausgeführt werden, sobald eines dieser Ereignisse eintritt.
using System;
using System.Management;
// This example demonstrates how to perform an asynchronous instance enumeration.
public class EnumerateInstancesAsync {
public static int Main(string[] args) {
//Enumerate asynchronously using Object Searcher
//===============================================
//Instantiate an object searcher with the query
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(new SelectQuery("Win32_Service"));
// Create a results watcher object, and handler for results and completion
ManagementOperationObserver results = new ManagementOperationObserver();
ObjectHandler objectHandler = new ObjectHandler();
// Attach handler to events for results and completion
results.ObjectReady += new ObjectReadyEventHandler(objectHandler.NewObject);
results.Completed += new CompletedEventHandler(objectHandler.Done);
//Call the asynchronous overload of Get() to start the enumeration
searcher.Get(results);
//Do something else while results arrive asynchronously
while (!objectHandler.IsCompleted) {
System.Threading.Thread.Sleep (1000);
}
objectHandler.Reset();
return 0;
}
//Handler for asynchronous results
public class ObjectHandler {
private bool isCompleted = false;
public void NewObject(object sender, ObjectReadyEventArgs obj) {
Console.WriteLine("Service : {0}, State = {1}",
obj.NewObject["Name"], obj.NewObject["State"]);
}
public bool IsCompleted {
get {
return isCompleted;
}
}
public void Reset() {
isCompleted = false;
}
public void Done(object sender, CompletedEventArgs obj) {
isCompleted = true;
}
}
}
Siehe auch
Zugreifen auf Verwaltungsdaten mit Hilfe von System.Management | Abfragen von Verwaltungsdaten | Abonnieren und Verwenden von Verwaltungsereignissen | Ausführen von Methoden für Verwaltungsobjekte | Remote- und Verbindungsoptionen | Verwenden von Objekten mit starkem Typ