Bereitstellen von Daten für WMI
WMI stellt Daten zu verwaltbaren Windows-Objekten über WMI-Anbieter zur Verfügung. Ein Anbieter ruft Daten aus einer Systemkomponente, z. B. einem Prozess, oder einer instrumentierten Anwendung, z. B. SNMP oder IIS, ab und übergibt sie über WMI an eine Verwaltungsanwendung. Wenn beispielsweise eine Anwendung oder ein Skript Prozessinformationen mithilfe der WMI-Klasse Win32_Process anfordert, werden die Daten über einen vorinstallierten Anbieter dynamisch abgerufen.
In diesem Thema werden die folgenden Abschnitte behandelt:
- Erstellen eines Modells für ein verwaltbares Objekt
- Implementieren eines Modells für ein verwaltbares Objekt
- Bestimmen eines zu implementierenden Anbietertyps
- Bestimmen eines Hostingmodells (Implementierung) für einen Anbieter
- Implementieren eines Anbieters
- Registrieren eines Anbieters bei WMI und dem System
- Testen eines Anbieters
- Zugehörige Themen
Erstellen eines Modells für ein verwaltbares Objekt
Erstellen Sie vor dem Entwickeln eines Anbieters ein Datenmodell zur Darstellung des verwaltbaren Objekts, das über WMI verfügbar gemacht werden soll. Sie planen, welche Datenobjekte Ihr Anbieter verfügbar machen soll. Wenn Sie beispielsweise die Bildschirmauflösung des Desktophintergrunds verwalten möchten, müssen Sie entscheiden, wie der Desktop in einer MOF (Managed Object Format)-Datei modelliert werden soll.
So erstellen Sie ein nützliches Modell:
- Bestimmen Sie reale Szenarien, und modellieren Sie für jedes verwaltbare Objekt die Informationen, die ein Kunde möglicherweise lesen und aktualisieren möchte (z. B. das Ändern des Hintergrundbilds). Das sind Ihre Klasseneigenschaften.
- Bestimmen Sie, welche Art von Aktionen ein Kunde mit jedem verwaltbaren Objekt ausführen möchte. Das sind Ihre Methoden.
Implementieren eines Modells für ein verwaltbares Objekt
Erstellen Sie zum Implementieren eines Modells für verwaltbare Objekte eine MOF-Datei mit einer WMI-Klasse, die jedes Objekt darstellt. Weitere Informationen zum Erstellen einer MOF-Datei zum Definieren von WMI-Klassen finden Sie unter Entwerfen von MOF-Klassen (Managed Object Format). Die Registrierung des Anbieters und seiner Klassen ist normalerweise in der MOF-Datei enthalten, obwohl es möglich ist, die COM-API zum Erstellen von Klassen und Methoden zu verwenden. Weitere Informationen finden Sie unter Entwickeln eines WMI-Anbieters.
Hinweis
Um sicherzustellen, dass bei einem Fehler und Neustart von WMI alle Ihre WMI-Klassendefinitionen für verwaltete Objekte im WMI-Repository wiederhergestellt werden, verwenden Sie die Präprozessoranweisung #pragma autorecover in Ihrer (MOF (Managed Object Format)-Datei.
Nachdem Sie die MOF-Datei erstellt haben, kompilieren Sie sie mit dem Tool Mofcomp.exe. Dadurch werden Sie über Fehler in Ihrer MOF-Datei benachrichtigt, und die in der MOF-Datei definierte WMI-Klasse wird dem WMI-Repository hinzugefügt, damit sie von einem Anbieter verwendet werden kann.
Bestimmen eines zu implementierenden Anbietertyps
WMI unterstützt eine bestimmte Anzahl von Anbietertypen, die die Art der bereitgestellten Informationen und der von den Anbietern unterstützten Vorgänge festlegen.
Dies sind die Anbietertypen:
- Instanzanbieter
- Methodenanbieter
- Eigenschaftenanbieter
- Klassenanbieter
- Ereignisanbieter
- Ereignisconsumeranbieter
- Zuordnungsanbieter
Die überwiegende Mehrheit der Anbieter sind Instanz- und Methodenanbieter. Ein Instanzanbieter ist der am häufigsten verwendete Anbieter, und er stellt die Instanzen einer bestimmten Klasse bereit. Ein Methodenanbieter implementiert die Methoden von einer oder mehrerer Klasse(n). Weitere Informationen zu den Anbietertypen finden Sie unter Entwickeln eines WMI-Anbieters.
Bestimmen eines Hostingmodells (Implementierung) für einen Anbieter
WMI-Anbieter sind Binärdateien, die als COM-Objekte implementiert werden. Dies bedeutet, dass jeder Anbieter eine DLL-Datei hat, die innerhalb eines bestimmten Prozess- und Sicherheitskontexts ausgeführt werden kann. Dies wird von WMI als Hostingmodell bezeichnet. WMI bietet verschiedene Möglichkeiten zum Hosten von Anbietern, aber der gebräuchlichste Ansatz ist die Verwendung des gekoppelten Anbietermodells (das unter dem WMI-Prozess ausgeführt wird) im Sicherheitskontext „NetworkServiceHost“. Ein WMI-Anbieter kann entweder als „gekoppelt“ oder entkoppelt klassifiziert werden.
Der Begriff „gekoppelter“ oder „entkoppelter“ Anbieter bestimmt, unter welchem Hostprozess der Anbieter in Bezug auf den von WMI bereitgestellten Prozess „WMIPRVSE.EXE“ ausgeführt wird. Eine bewährte Methode besteht darin zu ermitteln, ob die vom Anbieter verfügbar gemachten Verwaltungsdaten und die API oder Anwendung, auf der sie basieren, im System immer verfügbar sind oder nicht. Wenn die API oder Anwendung, die der Anbieter nutzt, immer verfügbar ist (auf dem System ausgeführt wird), sollte er ein gekoppelter Anbieter sein. Andernfalls muss er ein entkoppelter Anbieter sein. Weitere Informationen zu Hostingmodellen finden Sie unter Anbieterhosting und -sicherheit.
Weitere Informationen zum Erstellen eines gekoppelten Anbieters finden Sie unter Bereitstellen von Daten für WMI durch Schreiben eines Anbieters, und Informationen zum Integrieren eines entkoppelten Anbieters in eine Anwendung finden Sie unter Integrieren eines Anbieters in eine Anwendung.
Gekoppelte Anbieter können als „in-process“ (in-proc) oder „out-of-process“ (out-of-proc) beschrieben werden. Wenn ein gekoppelter Anbieter ein „In-Proc“-Anbieter ist, wird er unter einem freigegebenen WMI-Hostingprozess vom Typ „WMIPRVSE.EXE WMI“ ausgeführt und als COM-In-Proc-Server (.dll) implementiert. Wenn ein Anbieter ein „Out-of-Proc“-Anbieter ist, wird er von WMI auf Anforderung eines Clients oder Ereignisses gestartet, aber als getrennter Prozess ausgeführt und als ausführbare Datei (.exe) implementiert.
Implementieren eines Anbieters
Ein Anbieter kann auf folgende Arten implementiert werden:
Mithilfe des ATL-Assistenten in Visual Studio.
Der ATL-Assistent generiert Anbietercode, der einen gekoppelten Anbieter implementiert. Bei Verwendung des ATL-Assistenten können Sie angeben, dass Sie ein Anbieter-Laufzeitmodell vom Typ „In-Proc“ (.dll) oder „out-of-proc“ (.exe) erstellen möchten.
Definieren eines COM-Objekts, das Ihren Anbieter enthalten soll.
Der Anbietercode wird in C++ geschrieben. Weitere Informationen finden Sie unter Bereitstellen von Daten für WMI durch Schreiben eines Anbieters.
Mithilfe der Klassen im Namespace Microsoft.Management.Infrastructure im .NET Framework zum Erstellen eines Anbieters mit verwaltetem Code. (Der Namespace System.Management.Instrumentation wird nicht mehr unterstützt.)
Durch diesen Prozess wird ein entkoppelter Anbieter erstellt.
Registrieren eines Anbieters bei WMI und dem System
Bevor Sie den Anbieter aus einem Consumer verwenden, ist es wichtig, ihn beim WMI-System und beim Windows COM-Subsystem zu registrieren.
Eine MOF-Datei kann mehrere Anbietertypen für dieselben Klassen enthalten. Derselbe Anbietername wird z. B. als eine Instanz oder ein Methodenanbieter registriert. Weitere Informationen finden Sie unter Registrieren eines Anbieters.
Testen eines Anbieters
Wenn der Anbietercode registriert wird, ist es wichtig, den Anbieter ordnungsgemäß zu testen, indem der Anbieter aus verschiedenen Consumern (beispielsweise Skripts, verwaltetem .NET-Code und C++-Consumern) verwendet wird.
Führen Sie die folgenden Aufgaben zum Testen Ihres Anbieters aus:
- Stellen Sie sicher, dass Ihr Anbieter ordnungsgemäß geladen wird, indem Sie die Ereignisbenachrichtigungen vom Typ MSFT_WmiProvider_OperationEvent nachverfolgen. Diese Ereignisse informieren Sie über alle Fehler beim Laden des Anbieters. Weitere Problembehandlungsklassen, die hilfreich sein können, sind Win32_ProcessStartTrace und Win32_ProcessStopTrace. Weitere Informationen zur Problembehandlung bei Anbietern finden Sie unter Debuggen von Anbietern und Anbieterkonfigurations- und Problembehandlungsklassen.
- Wenn der Anbieter ein Instanz- oder Methodenanbieter ist, stellen Sie sicher, dass Sie jede Anbieterfunktion einzeln testen, um Verwechslungen bei der Einhaltung Ihrer Codelogik zu vermeiden.
- Erstellen Sie für einen Instanzanbieter eine Clientanwendung oder ein Skript, die bzw. das jede Schnittstelle des Anbieters aufruft („enumeration“, „get“, „put“ und „delete“). Selbst wenn der Anbieter nichts implementieren soll, sollte sie die Meldung „nicht unterstützt“ zurückgeben. Sie können die bereits definierten Rückgabewerte in WMI-Rückgabecodes finden.
- Wenn Sie sicherstellen möchten, dass der gewünschte Sicherheitskontext wie geplant funktioniert, rufen Sie die vom Anbieter unterstützten Vorgänge aus einem Sicherheitskontext ohne Administrator auf. Der Anbieter muss den Identitätswechsel unterstützen. Wenn ein Benutzer ohne die richtigen Sicherheitsanmeldeinformationen versucht, Daten zu aktualisieren oder einen Vorgang durchzuführen, der eine Methode ausführt, sollte Ihr Anbieter den Zugriff mit der entsprechenden Fehlermeldung verweigern.
- Weitere Informationen zur Anbietersicherheit finden Sie unter Schützen Ihres Anbieters.
Zugehörige Themen
-
Bereitstellen von Daten für WMI durch Schreiben eines Anbieters
-
Abrufen und Bereitstellen von Daten auf einer 64-Bit-Plattform