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.
Möglicherweise möchte der Entwickler in einem Datenverwaltungsszenario eine Klasse für die Verwaltung offen legen.
Eine .NET Framework-Klasse wird für die Verwaltung definiert, implementiert und markiert. Dies kann erreicht werden, indem das InstrumentationClass(InstrumentationType.Instance)-Attribut für die Klasse verwendet oder die Klasse von der Instance-Klasse abgeleitet wird. Dadurch wird automatisch das WMI-Schema der verwalteten Codeklasse erzeugt. Instanzen der Klasse werden als WMI-Instanzen offen gelegt, wobei alle Eigenschaftenwerte zugeordnet werden.
Die Definition der Instrumentationsklassen erfolgt zur Entwurfszeit (Kompilierungszeit) und stellt nur die erste Hälfte der Zuständigkeit der Anwendung dar. Zur Laufzeit muss die Anwendung reale Daten zur Verfügung stellen. Es ist nicht erforderlich, dass die Entwickler von verwaltetem Code neue Methoden erlernen, um die Daten in einer Struktur formatieren zu können, die von WMI verarbeitet werden kann. Da verwaltete Anwendungen dieselben verwalteten Klassen verwenden, die auch die WMI-Instrumentationsklassen verwenden, stellen sie Daten zur Verfügung, indem sie die Klassen instanziieren und die Felder ausfüllen. Die über WMI offen gelegten Daten werden direkt in den Feldern und Eigenschaften der verwalteten Klasse gelesen.
Darüber hinaus müssen für Entwickler von verwaltetem Code folgende grundlegenden Anforderungen erfüllt sein, damit die Instrumentation über WMI aufgerufen werden kann:
Definieren verwalteter Klassen (in einer beliebigen unterstützten Sprache), die die Instrumentation beschreiben.
Diese werden WMI-Klassen zugeordnet, ohne dass dafür Kenntnisse über WMI-Methoden oder die WMI-Grammatik für die Definition von Klassen benötigt werden.
Zur Laufzeit werden Informationen für WMI aufgerufen, indem die Klassen instanziiert, die Felder ausgefüllt und die Instanzen veröffentlicht werden.
Das folgende Codebeispiel demonstriert, wie eine Instanzklasse für die Verwaltungsinstrumentation erstellt und eine Instanz dieser Klasse in WMI veröffentlicht wird:
using System;
using System.Management;
using System.Configuration.Install;
using System.Management.Instrumentation;
// This example demonstrate how to define a management instrumentation
// class and how to publish an instance of this class to WMI.
// Specify which namespace the data should be published into
[assembly:Instrumented("root/default")]
// Let the system know InstallUtil.exe utility will be run against
// this assembly
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
// Define a management instrumentation class
[InstrumentationClass(InstrumentationType.Instance)]
public class InstanceClass {
public string Name;
public int Number;
}
public class Sample_InstanceProvider {
public static int Main(string[] args) {
InstanceClass instClass = new InstanceClass();
instClass. Name = "Hello";
instClass. Number = 888;
// Publish this instance to WMI
Instrumentation.Publish(instClass);
Console.WriteLine("Instance now visible through WMI");
Console.ReadLine();
Instrumentation.Revoke(instClass); //optional
return 0;
}
}
[Visual Basic]
Imports System
Imports System.Management
Imports System.Configuration.Install
Imports System.Management.Instrumentation
' This example demonstrate how to define a management instrumentation
' class and how to publish an instance of this class to WMI.
' Specify which namespace the data should be published into
<assembly: Instrumented("Root/Default")>
' Let the system know InstallUtil.exe utility will be run against
' this assembly
<System.ComponentModel.RunInstaller(True)> _
Public Class MyInstaller
Inherits DefaultManagementProjectInstaller
End Class
' Create a management instrumentation instance class
<InstrumentationClass(InstrumentationType.Instance)> _
Public Class InstanceClass
Public Name As String
Public Number As Integer
End Class
Public Class Sample_InstanceProvider
Overloads Public Shared Function Main(args() As String) As Integer
Dim instClass As New InstanceClass()
instClass.Name = "Hello"
instClass.Number = 888
' Publish this instance to WMI
System.Management.Instrumentation.Instrumentation.Publish(instClass)
Console.WriteLine("Instance now visible through WMI")
Console.ReadLine()
System.Management.Instrumentation.Instrumentation.Revoke(instClass)
Return 0
End Function
End Class
Siehe auch
Instrumentieren von .NET Framework-Anwendungen mit System.Management | Klassen und Zuordnung in CLI und WMI | Offenlegen von Verwaltungsereignissen | Vererbung | Registrieren des Schemas für eine instrumentierte Anwendung