Dirk Primbs PSS Developer Support Microsoft GmbH Email: [email protected] WMI.NET...

46
Dirk Primbs PSS Developer Support Microsoft GmbH Email: [email protected] WMI .NET Framework-Klassen in WMI .NET Framework-Klassen in eigenen Anwendungen nutzen eigenen Anwendungen nutzen

Transcript of Dirk Primbs PSS Developer Support Microsoft GmbH Email: [email protected] WMI.NET...

Page 1: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

Dirk PrimbsPSS Developer Support

Microsoft GmbH

Email: [email protected]

WMI .NET Framework-Klassen in WMI .NET Framework-Klassen in

eigenen Anwendungen nutzeneigenen Anwendungen nutzen

Page 2: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 2

Agenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 3: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 3

AgendaAgenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 4: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 4

Wofür WMI?

Welche Grafikkarte?Welche Grafikkarte?

Routing-Tabelle?Routing-Tabelle?

Installierte Netzwerkshares?

Installierte Netzwerkshares?

Prozeß remote beenden?Prozeß remote beenden?

Läuft das Programm XY noch?Läuft das Programm XY noch?

Rechner zuschalten bei hoher Prozessorlast!

Rechner zuschalten bei hoher Prozessorlast!

Installierte Software?Installierte Software?

Laufende Services?Laufende Services?

Performance Counter?Performance Counter?

DHCP aktivieren!DHCP aktivieren!

System neu booten bei hoher Speicherauslastung?

System neu booten bei hoher Speicherauslastung?

Page 5: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 5

Was ist WMI?

Implementierung des Web Based Enterprise Managements (WBEM) • Standardisierung durch die DMTF (Desktop

Management Task Force)

• Common Information Model (CIM) als Kern von WMI

• Beschreibung sowohl physischer (z. B. Festplatte) als auch logischer Objekte (Dateien, Prozesse) innerhalb eines Objektmodells

CIM als Vereinigung von Standards wie ISO Management Framework, X.700 und SNMP

Zugriffsmöglichkeiten auf Active Directory, Windows Installer, Performance Counters

Page 6: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 6

Möglichkeiten von WMI

Ermitteln verschiedenster Systemparameter

Sammeln von Informationen über mehrere Systeme hinweg

Setzen von Parametern / Konfigurieren von Geräten/Programmen

Auslösen von Events zu bestimmten Systemereignissen

Abfrage von Informationen in WQL

Page 7: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 7

WBEMWBEMConsumerConsumer

WMI ProvidersWMI Providers(werden bei Bedarf geladen)(werden bei Bedarf geladen)

DCOMDCOM

SNMPSNMP ActiveActiveDirectoryDirectory

WMIWMIext forext forWDMWDM

NT EventNT EventLogLog

PerfPerfCountersCountersRegistryRegistry

CIM – Management SchemaCIM – Management Schema

WMI ServicesWMI ServicesPub/SubPub/SubServiceService

CorrelationCorrelationServiceService

Event Event FilteringFiltering

QueryQueryServiceService

CIM RepositoryCIM Repository

DCOMDCOM

ODBCODBCAdapterAdapter

ODBCODBCClientClient

SWBEM…SWBEM…ScriptScript COM APICOM APICOMCOMClientClient

WMI Architektur

WMI managed-WMI managed-code APIscode APIs

ManagedManagedCodeCodeClientClient

Page 8: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 8

WMI Architektur

Provider bieten Zugriff auf Objekte an Consumer greifen auf Informationen zu Managed Objects (MOs) repräsentieren

(Hardware- oder Software-) Ressourcen Organisiert in verschiedene

„Namespaces“ Klassen als „Beschreibung“ von

Ressourcen Instanzen von Klassen als

„Verkörperung“ der tatsächlich vorhandenen Objekte

Page 9: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 9

Ablauf einer WMI-Anfrage

AnforderungAnforderung Lokaler WMI-Service •Erfüllt lokale Anfragen

•Leitet Remote-Anfragen weiter

Lokaler WMI-Service •Erfüllt lokale Anfragen

•Leitet Remote-Anfragen weiter

Remote WMI-Service•Ermittelt Werte mit Hilfe des

Repository und den WMI-Providern

Remote WMI-Service•Ermittelt Werte mit Hilfe des

Repository und den WMI-Providern

WMI-ObjektWMI-Objekt

\\myserver\root\cimv2:win32_logicaldisk.name=„c:“

\\myserver\root\cimv2:win32_logicaldisk.name=„c:“

DCOMDCOM

RepositoryRepositoryProviderProvider

Page 10: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 10

WMI Architektur - MOF

Klassen werden als MOF-Dateien (Managed Object Format) in kompilierter Form (mofcomp.exe) im Repository abgelegt

class Win32_Environment : CIM_SystemResource {

string Caption; string Description;datetime InstallDate;string Name;string Status;boolean SystemVariable;string UserName;string VariableValue;

};

Page 11: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 11

WMI-Pfade

Klassen sind in Namespaces gruppiert Ein vollständiger Pfad gibt Zielserver,

Namespace und ggf. Name der gewünschten Instanz an:

ManagementPath path = new ManagementPath( @”\\MyServer\root\cimv2:” +

“Win32_logicaldisk=‘c:‘”);

Standardpfad: \\localhost\root\cimv2

Page 12: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 12

WQL

Abfragesprache für Instanzen und Klassen innerhalb von WMI

Subset von SQL Beispiele:

• Alle Shares eines Systems: SELECT * FROM win32_share

• Ein spezieller Share: SELECT * FROM win32_share

WHERE name=‚public‘

Page 13: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 13

Demo

WMI mit dem CIM-Studio erkunden

Page 14: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 14

WMI .NET API Architektur

WinMgmt Service WinMgmt Service ( CIMOM )( CIMOM )

COM InterfacesCOM Interfaces

ProviderProvider(DLL, EXE)(DLL, EXE)

CIM CIM RepositoryRepository

.NET WMI API.NET WMI API

.NET Application.NET Application.NET WMI Interfaces.NET WMI Interfaces

….Net.Net

InstrumentationInstrumentation

.NET WMI Instrumentation.NET WMI InstrumentationInterfacesInterfaces

Page 15: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 15

AgendaAgenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 16: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 16

AgendaAgenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 17: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 17

System.Management

Main Collection

ManagementOptions

ManagementQuery

ManagementObjectSearcher

EventWatcher

ManagementEventObject

OperationWatcher

ManagementObject /

Management Class

ManagementObjectCollection

MethodQualifierProperty

Property Set QualifierSet MethodSet

ObjectQuery EventQuery

DataQuery SchemaQuery

KeyKeyMain Class

Collection

Can be obtained fromCan be obtained from

ManagementPath

ManagementScope

ManagementException

Security

Page 18: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 18

Die wichtigsten Objekte

ManagementClass

• „Blueprint“ eines WMI-Objekts

ManagementObject

• Instanz einer WMI-Klasse

ManagementObjectSearcher

• Ermittelt Collections von WMI-Objekten

Page 19: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 19

ManagementClass

Repräsentiert eine WMI-Schemaklasse Scope

• Namespace des Objekts

Methods• Liefert Collection der an dem WMI-Objekt aufrufbaren

Methoden

Properties• Liefert Collection der an dem WMI-Objekt vorhandenen

Eigenschaften

CreateInstance()• Erzeugt eine zu der Klasse passende Objektinstanz

GetInstances()• Ermitteln aller im System vorhandenen Objektinstanzen der

Klasse

Page 20: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 20

ManagementClass – Beispiel 1

Ermitteln der für Win32_LogicalDisk verwendbaren Eigenschaften:

ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk"); diskClass.Get(); foreach (MethodData m in diskClass.Methods)

Console.WriteLine(m.Name);

Page 21: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 21

ManagementClass – Beispiel 2

Boot-Delay per WMI .NET setzen

ManagementClass c = newManagementClass("win32_computersystem");

ManagementObjectCollection col =c.GetInstances();

foreach (ManagementObject o in col)

o[„SystemStartUpDelay“] = 3;

Page 22: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 22

Demo

Processviewer mit WMI .NET

Page 23: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 23

ManagementObject

Repräsentiert WMI-Objekte

• Direkt instanziierbar:

ManagementObject o = new ManagementObject();

o.Path = “Win32_Process=‘notepad.exe’”;

oder

ManagementObject o = new ManagementObject(“Win32_Process=‘notepad.exe’”);

Page 24: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 24

ManagementObject - II

ClassPath • Vollständiger Pfad zu der Klasse

Indexer [] • ermöglicht Zugriff auf Eigenschaften

über deren Name

• Alternativ: GetPropertyValue(), GetQualifierValue()

GetText()• Liefert Quelltext des Objektes als MOF

CompareTo() • vergleicht mit anderen Objekten

Page 25: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 25

ManagementObject - III

Scope • Namespace des Objektes

Path • Pfad zum Objekt

Get() • bindet das .Net-Objekt an ein tatsächliches WMI-

Objekt.

GetRelated() • “in Beziehung stehende” Objekte ermitteln

(Anwendung bei Associations)

GetRelationships() • Vorhandene Associations ermitteln

Page 26: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 26

ManagementObject - IV

Put() • Speichert gemachte Änderungen oder erzeugt neues WMI-

Objekt

CopyTo() • Kopiert das aktuelle Objekt in einen anderen Namespace

Delete()

• Löscht das repräsentierte WMI-Objekt

InvokeMethod()

• Ausführung einer Methode des aktuellen WMI-Objektes

GetMethodParameters()• Argumentenliste einer Methode ermitteln

Page 27: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 27

Beispiel 1

WMI-Objekt eines Service ermitteln und seine Eigenschaften anzeigen:

ManagementObject myService = new ManagementObject(“Win32_Service= ‘Alerter’”);

foreach (PropertyData p in myService.Properties)

Console.WriteLine("{0}:\t{1}",p.Name, p.Value);

Page 28: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 28

Beispiel 2

Abhängige Services ermitteln und gemeinsam starten:

ManagementObjectCollection relatedServices = myService.GetRelated(“Win32_Service”);

foreach (ManagementObject service in relatedServices)

service.InvokeMethod(“StartService”);

Page 29: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 29

ManagementObjectSearcher

Wird verwendet, um Collections von Objekten zu erhalten

Einsatz bei Enumerierung und Queries

ManagementObjectSearcher s = new ManagementObjectSearcher();

s.Query = new WqlObjectQuery(

"SELECT * FROM win32_process");

ManagementObjectCollection processes = s.Get();

foreach (ManagementObject process in processes)

{

Console.WriteLine(process["Name"]);

}

Page 30: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 30

ManagementObjectSearcher - II

Scope• Namespace auf den sich die Query / Enumeration bezieht

Query • WQL-Abfrage zum Anfordern der WMI-Objekte

Options • Optionen für den Einsatz der Abfrage

Get() • Ausführen der Abfrage

Page 31: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 31

Demo

Der Remote-Processviewer

Page 32: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 32

Typisierte WMI-Klassen

WMI-Klassen mit strong typed Eigenschaften und Methoden

Erstellung mittels

• Kommandozeilentool mgmtclassgen.exe

mgmtclassgen win32_operatingsystem

• WMI Server Explorer Extension (Beta 2)http://www.microsoft.com/downloads/release.asp?

ReleaseID=31155&area=search&ordinal=1

Page 33: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 33

Typisierte Klassen – Beispiel

Labels aller im System vorhandenen Laufwerke ausgeben

using MyApp.ROOT.CIMV2;…foreach (LogicalDisk l in

LogicalDisk.GetInstances())Console.WriteLine(„{0}:\t{1}“, l.Name,

l.VolumeName);

Page 34: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 34

Demo

Typisierte WMI-Objekte

Page 35: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 35

AgendaAgenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 36: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 36

AgendaAgenda

WMI Grundlagen WMI .NET in eigenen Applikationen:

Überblick über das System.Management

laufende Prozesse ermitteln

Boot-Delay per WMI .NET setzen

Asynchrone Bearbeitung & WMI-Eventbehandlung

Fragen

Page 37: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 37

Asynchrone Bearbeitung

ManagementOperationsObserver

• Bindeglied zwischen WMI und Rückrufmethoden

Rückruf mittels Delegates:

• ObjectReady – Ein Objekt (etwa in einer Enumeration) steht zur Bearbeitung bereit

• Completed – Eine Operation wurde abgeschlossen

Page 38: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 38

WMI-Events

Permanente und temporäre Eventconsumer:• Temporärer Consumer: WMI-Applikation, die

Events von WMI empfängt

• Permanenter Consumer: Für ein Event registrierte Komponente; Komponentenstart bei Eintreffen eines passenden Events

Event-Bindung via WQL:select * from __instancemodificationevent

within 5 where targetinstance isa 'Win32_Processor' and

targetinstance.LoadPercentage > 50

Page 39: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 39

WMI-Events - Typen

__InstanceCreationEvent

• Löst aus, wenn Instanzen erzeugt werden

__InstanceModificationEvent

• Löst bei Änderung einer Instanz aus

__InstanceDeletionEvent

• Wird durch das Löschen einer Instanz erzeugt

Page 40: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 40

WMI-Events - Objekte

ManagementEventWatcher

• Bindeglied zwischen WMI und Rückrufmethoden

Synchrone Eventbearbeitung:

• WaitForNextEvent()

Asynchroner Rückruf mittels Delegate:

• EventArrived – Ein passendes Event ist eingetreten und kann bearbeitet werden

Page 41: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 41

Events synchron empfangen

// WQL-Eventabfrage erzeugenWqlEventQuery query = new WqlEventQuery("__InstanceModificationEvent",

new TimeSpan(0,0,1), "TargetInstance isa \"Win32_Service\"");

// Eventbindung anlegenManagementEventWatcher watcher = new

ManagementEventWatcher(query);

// Event abwartenManagementBaseObject e = watcher.WaitForNextEvent();ManagementObject e2 =

(ManagementBaseObject)e["TargetInstance"];

Console.WriteLine("Service {0}, Status {1}",e2["Name“], e2["State"]);

// Eventbindung lösenwatcher.Stop();

Page 42: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 42

Events asynchron empfangen

// Rückruffunktion bei eintreffenden Eventspublic class EventHandlerClass {

public void Arrived(object sender, EventArrivedEventArgs e) {

Console.WriteLine(„Event arrived!“);}

}

...

// Delegate einbindenEventHandlerClass c = new EventHandlerClass();watcher.EventArrived += new EventArrivedHandler(c.Arrived);

// Eventempfang startenwatcher.Start();

// … Programmcode …

// Eventbindung lösenwatcher.Stop();

Page 43: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 43

Demo

Asynchrone Bearbeitung und Eventempfang

Page 44: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 44

Was sonst noch?

WMI ist in Windows 2000, Windows Me und Windows XP als Service installiert

Separat für Windows 95 osr2.5, Windows 98, Windows 98 SE, und Windows NT 4.0 (ab SP4) installierbar

Core und SDK Download im Web: • SDK:

http://www.microsoft.com/management/wmi • Core: http://www.microsoft.com/downloads/

release.asp?ReleaseId=18490 Frei redistribuierbar

Page 45: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 45

Und….

WMI-Tutorial http://www.microsoft.com/downloads/release.asp?ReleaseID=12570&area=search&ordinal=8

Desktop Management Task Forcehttp://www.dmtf.org/

Managing Windows with WMI: http://msdn.microsoft.com/library/techart/mngwmi.htm

Administering Windows and Applications across Your Enterprise:http://msdn.microsoft.com/msdnmag/issues/0500/wmiover/wmiover.asp

Page 46: Dirk Primbs PSS Developer Support Microsoft GmbH Email: dirkp@microsoft.com WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 46

Fragen!?

Uff...Uff...