Zugriff auf WMI Instanzen (Com4J)

MarginOrimp

Grünschnabel
Hallo zusammen

Dieser Beitrag ist mein erster im Forum, ansonsten war ich eher read-only. Ich hoffe er ist am richtigen Ort plaziert...

Problemstellungen:
Über Com4j steure ich das COM Objekt von Windows an, welches mir die WMI-Funktionalität zur Verfüugung stellt.
Das Erstellen der Wrapperklassen mit Com4J funktionierte ohne Problem und auch das Abrufen einzelner Eventlogeinträge mittels WMI klappte ohne Probleme.
Da ich das ganze zur Systemüberwachung nutzen wollte hab ich dieses nun auf einen Listener umgestellt. Nun bekomme ich ein Objekt welches mehrere Instanzen enthält. Hier ein Beispiel im MOF-Format weclhes mir WMI zurückgibt:

Code:
instance of __InstanceCreationEvent
{
	SECURITY_DESCRIPTOR = {1, 0, 4, 128, 84, 1, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 64, 1, 12, 0, 0, 0, 1, 0, 24, 0, 95, 0, 15, 0, 1, 1, 0, 0, 0, 0, 0, 5, 7, 0, 0, 0, 97, 0, 110, 0, 1, 0, 28, 0, 95, 0, 15, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 34, 2, 0, 0, 99, 0, 101, 0, 0, 0, 24, 0, 95, 0, 15, 0, 1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0, 34, 2, 0, 0, 0, 0, 28, 0, 69, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0, 99, 0, 101, 0, 0, 0, 28, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 39, 2, 0, 0, 99, 0, 101, 0, 0, 0, 28, 0, 69, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 37, 2, 0, 0, 99, 0, 101, 0, 0, 0, 24, 0, 65, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 37, 2, 0, 0, 0, 0, 28, 0, 66, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0, 99, 0, 101, 0, 0, 0, 24, 0, 66, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 5, 19, 0, 0, 0, 32, 2, 0, 0, 0, 0, 24, 0, 66, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 5, 20, 0, 0, 0, 32, 2, 0, 0, 0, 0, 28, 0, 66, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 37, 2, 0, 0, 99, 0, 101, 0, 0, 0, 24, 0, 66, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 37, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0};
	TargetInstance = 
instance of Win32_NTLogEvent
{
	Category = 0;
	ComputerName = "W2K3_WMI";
	EventCode = 1002;
	EventIdentifier = 3221226474;
	EventType = 1;
	InsertionStrings = {"TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING", "TEST-STRING"};
	Logfile = "Application";
	Message = "Unable to allocate a dynamic memory buffer
\n";
	RecordNumber = 1439;
	SourceName = "PerfDisk";
	TimeGenerated = "20090923104728.000000+120";
	TimeWritten = "20090923104728.000000+120";
	Type = "Error";
};
	TIME_CREATED = "128981692495633750";
};

Um nun auf die Werte des neuen Events zuzugreifen benötige ich zuerst die Instanz von Win32_NTLogEvent.

Folgender Aufruf um auf die Instanzen zugreifen zu können hat bei mir leider nicht zum Erfolg geführt und hat lediglich einen "unknown error" zurückgegeben:

Code:
ISWbemObjectSet result = wmiObject.instances_(0, null);

Ich teste das ganze unter Windows Server 2003 und ansonsten funktioniert alles anstandslos, nur wie ich auf weitere Instances zugreif ist mir ein rätsel.

Ich hoffe ich hab mich verständlich ausgedrückt und es kann mir einer helfen. Schonmal danke für alle die es zumindest versuchen mir zu helfen! :)
 

Neue Beiträge

Zurück