Hallo,
ich habe da ein Problem die eingetragenen DNS-Server, das Adapter und die IP-Adresse eines Servers (oder auch Clients) auszulesen.
Diese Daten sollen dann, neben noch ein paar anderen Info's (ping results...) als einfacher auslebarer Wert in die Registry geschrieben werden.
Nun funktioniert meine Lösung eigentlich Das Auslesen der Werte klappt, der Ping klappt und das Schreiben in die Registry auch.
Aber leider nur unter Windows XP, Vista, W7 und W2K3 (meistens), weil ich dort WMI nutzen kann. Es muss aber auch auf (bitte nicht lachen!!!) Windows 2000 Servern funktionieren und dort ist mit WMI nix...
Nun kann ich die IP-Adresse(n) des Rechners ermitteln (solange die OS-Sprache mitspielt)
Beispiel für einen deutschen Client: ("IP-Adresse" anstelle von "IP Address")
#include <Constants.au3>
Local $PID = Run(@ComSpec & ' /c ipconfig /all|find "IP-Adresse"', "", @SW_HIDE, $STDOUT_CHILD)
Local $line
While 1
$line &= StdoutRead($PID)
If @error Then ExitLoop
Wend
MsgBox(0, "IP-Adresse:", $line)
Auch die erste DNS-Server-Adresse bekomme ich noch heraus,
Beispiel für einen deutschen Client: ("DNS-Server" anstelle von "DNS Server")
#include <Constants.au3>
Local $PID = Run(@ComSpec & ' /c ipconfig /all|find "DNS-Server"', "", @SW_HIDE, $STDOUT_CHILD)
Local $line
While 1
$line &= StdoutRead($PID)
If @error Then ExitLoop
Wend
MsgBox(0, "DNS-Server:", $line)
ABER:
Den zweiten DNS Server (oder Dritten?) den es ggfs. gibt (bei uns meistens), den bekomme ich nicht.
Die Beschreibung/Description des Adapters bekomme ich auf die gleiche Art, wie die IP, allerdings empfinde ich das dann doch als etwas "anstrengend",
zumal die Zuordnungen Adapter - IP-Adresse - DNS-Server so nicht mehr erkennbar sind.
Also, Alles in einen Array, doch:
- wie füllt man diesen Array am geschicktesten, die Ausgabe von z. B. IPCONFIG /ALL oder netsh... zeilenweise als Arrayelement? (kann man die Ausgabe überhaupt so umbiegen?)
- wie geht man diesen Array dann durch? Schließlich sind die einzelnen Werte nicht immer vorhanden...die Positionen können verschoben sein
Oder habt ihr vielleicht noch eine Idee, wie man das Problem lösen kann ohne WMI zu benutzen?
mfg
Axel
(etwas gefrustet, weil eigentlich letzte Nacht schon fertig...)