Sie sind hier: Startseite
 Liste aller Codebeispiele

Ausschnitt aus WMI_Bindung() - Objektbindung

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 FCL_Buch._System_Management {

  public class Samples_WMI_Allgemein {

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

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Management.ManagementObject'  Übersicht über den FCL-Namensraum 'System.Management'  .NET & Visual Studio Community Portal