Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.Management.ManagementObject aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Die Verwendung von WMI beginnt mit der Bindung eines Meta-Objekts (ManagementObject oder ManagementClass) an ein WMI-Objekt oder eine WMI-Klasse. Das WMI-Objekt bzw. die -Klasse wird über einen WMI-Pfad spezifiziert. Dieser Pfad hat die Form:
\\Server\Namespace:Class.Key1="wert1",Key2="Wert2"
Mit Ausnahme von Class sind alle anderen Teile optional.
Bitte beachten Sie, dass im Gegensatz zur Verwendung in COM die COM-Moniker-ID "WinMgmts:" nicht mehr vor den Pfad gehört.
Ein solcher Pfad kann dem Konstruktor der Klassen ManagementObject und ManagementClass übergeben werden. Damit existiert die Bindung dann zunächst nur auf dem WMI-Client. Die Anfrage an das lokale oder entfernte WMI-Repository wird erst ausgeführt beim ersten Zugriff auf ein WMI-Attribut, beim ersten Aufruf einer WMI-Methode oder wenn explizit die Get()-Methode des Meta-Objekts aufgerufen wird. Erst dann wird festgestellt, ob die angeforderte WMI-Klasse bzw. das angeforderte WMI-Objekt existiert. Lediglich grundsätzliche Fehler in der Syntax des Pfades werden direkt bei der Instanziierung erkannt.
Programmcodebeispiele Visual Basic .NET (VB.NET)
Dim mo As Management.ManagementObject
Dim mc As Management.ManagementClass
' --- Bindung an eine lokale WMI-Klasse
mc = New ManagementClass("Win32_LogicalDisk")
mc.Get()
out("Gebunden an: " & mc.ToString)
' --- Bindung an ein entferntes WMI-Objekt
mo = New Management.ManagementObject _
("\\minbar\root\cimv2:Win32_LogicalDisk.DeviceID='c:'")
mo.Get()
out("Gebunden an: " & mo.ToString)
Programmcodebeispiele CSharp (C#)
using System;
using System.Management;
namespace FCLBuch._SystemManagement {
public class SamplesWMIAllgemein {
public void WMI_Bindung() {
// Bindung an eine lokale WMI-Klasse
ManagementClass mc = new ManagementClass("Win32_LogicalDisk");
mc.Get();
FclOutput.PrintOut("Gebunden an: " + mc.ToString());
// Bindung an ein entferntes WMI-Objekt
ManagementObject mo = new ManagementObject(@"\\Dagobar\root\cimv2:Win32_LogicalDisk.DeviceID='c:'");
mo.Get();
FclOutput.PrintOut("Gebunden an: " + mo.ToString());
// Bindung mit Optionen
// Optionen definieren
ConnectionOptions opt = new ConnectionOptions();
opt.Username = "dagobar\fe";
opt.Password = "xxx";
opt.Authentication = AuthenticationLevel.PacketPrivacy;
opt.Impersonation = ImpersonationLevel.Impersonate;
opt.Timeout = new TimeSpan(0, 0, 4); // 4 Sekunden
// Entfernten Computer definieren
ManagementScope scope = new ManagementScope(@"\\minbar\root\cimv2");
scope.Options = opt;
// Objekt definieren
ManagementPath path = new ManagementPath("Win32_LogicalDisk.DeviceID='c:'");
// Objekt binden
mo = new ManagementObject(scope, path, null);
mo.Get();
FclOutput.PrintOut("Gebunden an: " + mo.ToString());
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Management.ManagementObject'
Übersicht über den FCL-Namensraum 'System.Management'
.NET & Visual Studio Community Portal