![]() |
WMI Abfragen + Fehler wenn Rückgabewert NULL ist
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich frage via WMI Computer Informationen über das Netzwerk ab. Funktioniert auch alles wunderbar. Nur beim Auslesen der netzwerkeinstellungen habe ich Probleme. Ich lese folgendes aus: - Adaptername - IP - Subnetmask - Gateway - DNS - WINS - MAC Beim Auslesen des Gateways und der DNS Einstellungen habe ich Probleme. Beide geben ein Array zurück. Es kann vorkommen, dass es keine Rückgabewert gibt und stoße ich auf einen Fehler. Mein Code:
Delphi-Quellcode:
Ich habe es mit folgender Abfrage versucht aber es hat auch nicht funktioniert. Beispielhaft für das Gateway.
...
try SWbemLocator1 := CoSWbemLocator.Create; // Für lokale Computer darf kein Benutzer und Passwort verwendet werden if UpperCase(edt_system.Text) <> UpperCase(GetEnvironmentVariable('COMPUTERNAME')) then aSrv := SWbemLocator1.ConnectServer(edt_system.Text,'root\cimv2',frm_main.edt_user.Text, frm_main.edt_password.Text,'','',0,vNVS) else aSrv := SWbemLocator1.ConnectServer(edt_system.Text,'root\cimv2','','','','',0,vNVS); //*** Network Information *** Counter := 0; aObjSet := aSrv.ExecQuery('Select * from Win32_NetworkAdapterConfiguration where IPEnabled = true','WQL', 0, aNVSDummy); pEnum := aObjSet.Get__NewEnum as IEnumVARIANT; while (TRUE) do begin hRes := pEnum.Next(1, vOut, dwRetrieved); if hRes <> S_OK then Break; TempArray := vOut.IPAddress; if (TempArray[0] <> '0.0.0.0') and (TempArray[0] <> '') then begin DNS := ''; ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]); // ---> hier kommt der Fehler wenn kein Wert vorhanden ist TempArray := vOut.DNSServerSearchOrder; // ---> hier kommt der Fehler wenn kein Wert vorhanden ist for i := 0 to Length(TempArray) - 1 do begin if i = 0 then DNS := vOut.DNSServerSearchOrder[i] else DNS := DNS + ', ' + vOut.DNSServerSearchOrder[i]; end; ANetwork[Counter].dns := DNS; Inc(Counter); end; end; ...
Delphi-Quellcode:
Wenn DefaultIPGateway jetzt keinen Wert hat, funktioniert es. Sollte aber ein Wert kommen, läuft die IF Abfrage auf einen Fehler.
if vOut.DefaultIPGateway <> NULL then
ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]) else ANetwork[Counter].gw := ''; Wie kann ich prüfen, ob ein Wert kommt oder nicht in Abhängigkeit des Rückgabewertes? Ich bin für jede Hilfestellung dankbar. Denn ich verzweifel langsam. Gruß, Sven |
Re: WMI Abfragen + Fehler wenn Rückgabewert NULL ist
Hat denn keiner eine Idee.
Gruß, Sven |
Re: WMI Abfragen + Fehler wenn Rückgabewert NULL ist
Ich schließe diesen Beitrag, da das Problem kein WMI-Fehler ist sondern ein anderes. Ich erstelle einen neuen Beitrag.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz