Bereitstellen von Daten für WMI
WMI macht Daten zu Windows verwaltbaren Objekten über WMI-Anbieter verfügbar. Ein Anbieter ruft Daten von einer Systemkomponente ab, z. B. einem Prozess oder einer instrumentierten Anwendung wie SNMP oder IIS, und übergibt diese Daten über WMI an eine Verwaltungsanwendung. Wenn beispielsweise eine Anwendung oder ein Skript Informationen mithilfe der WMI Win32 _ Process-Klasse anfordert, werden die Daten dynamisch über einen vorinstallierten Anbieter abgerufen.
Die folgenden Abschnitte werden in diesem Thema erläutert:
- 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 der Entwicklung eines Anbieters ein Datenmodell, das das verwaltbare Objekt darstellt, das über WMI verfügbar gemacht werden soll. Sie planen, welche Datenobjekte ihr Anbieter verfügbar macht. Wenn Sie beispielsweise die Bildschirmauflösung des Desktophintergrunds verwalten möchten, müssen Sie entscheiden, wie der Desktop in einer MOF-Datei (Managed Object Format) modellieren soll.
So erstellen Sie ein nützliches Modell:
- Bestimmen Sie reale Szenarien, und modellieren Sie die Informationen, die ein Kunde für jedes verwaltbare Objekt lesen und aktualisieren möchte (z. B. das Ändern des Hintergrundbilds). Dies sind Ihre Klasseneigenschaften.
- Bestimmen Sie, welche Art von Aktionen ein Kunde mit jedem verwaltbaren Objekt ausführen möchte. Dies sind Ihre Methoden.
Implementieren eines Modells für ein verwaltbares Objekt
Um ein Modell für verwaltbare Objekte zu implementieren, erstellen Sie 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 in der Regel 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 alle WMI-Klassendefinitionen für verwaltete Objekte im WMI-Repository wiederhergestellt werden, wenn WMI ausfällt und neu gestartet wird, verwenden Sie die Präprozessoranweisung # pragma autorecover in Ihrer MOF-Datei (Managed Object Format).
Nachdem Sie die MOF-Datei erstellt haben, kompilieren Sie sie mit dem Mofcomp.exe Tool. 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 die Klasse von einem Anbieter verwendet werden kann.
Bestimmen eines zu implementierenden Anbietertyps
WMI unterstützt eine bestimmte Anzahl von Anbietertypen, die die Art der übermittelten Informationen und die von den Anbietern unterstützten Vorgänge bestimmen.
Die Anbietertypen sind:
- Instanzanbieter
- Methodenanbieter
- Eigenschaftenanbieter
- Klassenanbieter
- Ereignisanbieter
- Ereignisverbraucheranbieter
- Zuordnungsanbieter
Die überwiegende Mehrheit der Anbieter sind Instanzanbieter und Methodenanbieter. Ein Instanzanbieter ist der gängigste Anbieter und stellt die Instanzen einer bestimmten Klasse bereit. Ein Methodenanbieter implementiert die Methoden einer oder mehrerer Klassen. 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 über eine DLL-Datei verfügt, die innerhalb eines bestimmten Prozesses und Sicherheitskontexts ausgeführt werden kann. Dies wird von WMI als Hostingmodellbezeichnet. WMI bietet verschiedene Möglichkeiten zum Hosten von Anbietern, aber der gängigste Ansatz ist die Verwendung des gekoppelten Anbietermodells (das unter dem WMI-Prozess ausgeführt wird) im NetworkServiceHost-Sicherheitskontext. Ein WMI-Anbieter kann entweder als gekoppelt oder entkoppeltklassifiziert werden.
Der Begriff gekoppelter oder entkoppelter Anbieter bestimmt, unter welchem Hostprozess der Anbieter im Hinblick auf den WMIPRVSE.EXE bereitgestellten WMI-Prozess ausgeführt wird. Eine bewährte Methode besteht darin, zu bestimmen, ob die Verwaltungsdaten, die der Anbieter verfügbar macht, und die API oder Anwendung, auf der er basiert, immer im System verfügbar sind oder nicht. Wenn die API oder Anwendung, auf der bzw. der der Anbieter basiert, immer verfügbar ist (auf dem System ausgeführt), sollte der Anbieter ein gekoppelter Anbieter sein. Andernfalls muss es sich um einen entkoppelten Anbieter handelt. Weitere Informationen zu Hostingmodellen finden Sie unter Anbieterhosting und Sicherheit.
Weitere Informationen zum Erstellen eines gekoppelten Anbieters finden Sie unter Bereitstellen von Daten an WMI durch Schreiben eines Anbieters.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 WMIPRVSE.EXE WMI-Hostingprozess ausgeführt und als COM-Prozessserver (.dll) implementiert. Wenn ein Anbieter ein Out-of-Proc-Anbieter ist, wird er von WMI auf Anforderung eines Clients oder Ereignisses gestartet, aber als separater Prozess ausgeführt und als ausführbare Datei implementiert (.exe).
Implementieren eines Anbieters
Ein Anbieter kann auf folgende Weise implementiert werden:
Verwenden 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 In-Proc-Modell (.dll) oder ein Out-of-Proc-Anbietermodell (.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 an WMI durch Schreiben eines Anbieters.
Verwenden sie die Klassen im Namespace Microsoft.Management.Infrastructure im .NET Framework, um einen Anbieter mit verwaltetem Code zu erstellen. (Der System.Management.Instrumentation-Namespace wird nicht mehr unterstützt.)
Dieser Prozess erstellt einen entkoppelten Anbieter.
Registrieren eines Anbieters bei WMI und dem System
Bevor Sie den Anbieter von einem Consumer verwenden, ist es wichtig, ihn beim WMI-System und dem Windows COM-Subsystem zu registrieren.
Eine MOF-Datei kann mehrere Anbietertypen für dieselben Klassen enthalten. Der gleiche Anbietername wird z. B. als Instanz oder Methodenanbieter registriert. Weitere Informationen finden Sie unter Registrieren eines Anbieters.
Testen eines Anbieters
Wenn der Anbietercode registriert ist, ist es wichtig, den Anbieter mithilfe des Anbieters von verschiedenen Consumern (z. B. Skripts, verwaltetem .NET-Code und C++-Consumern) ordnungsgemäß zu testen.
Führen Sie die folgenden Aufgaben aus, um Ihren Anbieter zu testen:
- Stellen Sie sicher, dass Ihr Anbieter ordnungsgemäß geladen wird, indem Sie die MSFT _ WmiProvider _ OperationEvent-Ereignisbenachrichtigungen nachverfolgen. Diese Ereignisse informieren Sie über Auslastungsfehler des Anbieters. Weitere hilfreiche Problembehandlungsklassen sind Win32 _ ProcessStartTrace und Win32 _ ProcessStopTrace. Weitere Informationen zur Problembehandlung von Anbietern finden Sie unter Debuggen von Anbietern und Anbieterkonfiguration 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, das jede Schnittstelle des Anbieters aufruft (Enumeration, Get, Put und Delete). Auch wenn der Anbieter nichts implementieren soll, sollte er eine "nicht unterstützte" Meldung zurückgeben. Die bereits definierten Rückgabewerte finden Sie unter WMI-Rückgabecodes.
- Um sicherzustellen, dass der gewünschte Sicherheitskontext wie geplant funktioniert, rufen Sie die vom Anbieter unterstützten Vorgänge aus einem Nichtadministratorsicherheitskontext auf. Der Anbieter muss den Identitätswechsel unterstützen. Wenn ein Benutzer ohne die richtigen Sicherheitsanmeldeinformationen versucht, Daten zu aktualisieren oder einen Vorgang auszufü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.