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.
Das Löschen einer Instanz ist der gängigste Löschbefehl, den Sie wahrscheinlich in WMI ausführen werden. Wie das Löschen einer Klasse ist der eigentliche Befehl ziemlich einfach. WMI funktioniert jedoch je nach Art der zu löschenden Instanz ganz unterschiedlich. Wenn die Instanz statisch ist, löscht WMI die Instanz einfach aus dem WMI-Repository. Informationen zum Entfernen von Klassen und Instanzen aus dem WMI-Repository finden Sie in der Beschreibung des pragma deleteclass-Präprozessorbefehls.
Wenn die Instanz dynamisch ist, muss WMI IWbemServices::DeleteInstanceAsync für die Anbieter aufrufen, die für die folgenden Klassen verantwortlich sind:
- Die Klasse, die die Instanz besitzt.
- Jede übergeordnete Klasse der Klasse, die die Instanz besitzt.
- Jede untergeordnete Klasse der Klasse, die die Instanz besitzt.
Der Erfolg des Löschvorgangs hängt von der obersten nicht abstrakten Klasse für die ursprüngliche Instanz ab. Wenn der Anbieter für eine der obersten nicht abstrakten Klassen den Löschvorgang erfolgreich abgeschlossen hat, ist der Vorgang erfolgreich. Weitere Informationen finden Sie unter IWbemServices::DeleteInstance im Abschnitt „Hinweise“.
Die COM-API für WMI verfügt über verschiedene Methoden zum Löschen einer Instanz und eines Objekts.
Im folgenden Verfahren wird beschrieben, wie eine Instanz einer Basisklasse oder abgeleiteten Klasse mithilfe von C++ gelöscht wird.
So löschen Sie eine Instanz einer Basisklasse oder abgeleiteten Klasse mithilfe von C++
Rufen Sie entweder die IWbemServices::DeleteInstance- oder die IWbemServices::DeleteInstanceAsync-Methode auf.
Wie der Name besagt, löscht DeleteInstanceAsync eine Instanz asynchron, während DeleteInstance eine Instanz synchron löscht. Um DeleteInstanceAsync zu verwenden, müssen Sie auch ein IWbemObjectSink-Objekt implementieren.
Hinweis
Da der Rückruf an die Senke möglicherweise nicht auf der Authentifizierungsebene zurückgegeben wird, die der Client benötigt, empfiehlt es sich, anstelle der asynchronen Kommunikation eine halbsynchrone Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode.
Die Skript-API für WMI verwendet dieselben Methoden, um ein Klassenobjekt oder eine Instanz zu löschen.
Im folgenden Verfahren wird beschrieben, wie eine Instanz einer Basisklasse oder abgeleiteten Klasse mithilfe von VBScript gelöscht wird.
So löschen Sie eine Instanz einer Basisklasse oder abgeleiteten Klasse mithilfe von VBScript
Rufen Sie entweder die SWbemObject.Delete_- oder die SWbemObject.DeleteAsync_-Methode auf.
Wie der Name besagt, löscht Delete_ eine Instanz synchron, während DeleteAsync_ eine Instanz asynchron löscht. Weitere Informationen zum asynchronen Löschen einer Instanz finden Sie unter Aufrufen einer Methode.
Im folgenden Beispiel wird beschrieben, wie eine Instanz mithilfe von VBScript gelöscht wird.
Dim service Set service = GetObject("winmgmts:{impersonationLevel=impersonate}") Set objwbemobject= service.get("") objwbemobject.Path_.Class = "MyNewClass" objwbemobject.put_ service.delete "MyNewClass"
Hinweis
Da der Rückruf an die Senke möglicherweise nicht auf der Authentifizierungsebene zurückgegeben wird, die der Client benötigt, empfiehlt es sich, anstelle der asynchronen Kommunikation eine halbsynchrone Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode.