![]() |
TCP/IP-Einstellungen per Code ändern
Vorab: die Suchfunktion kenne ich, habe ich hier glaube ich ausführlich verwendet (und die brauchbaren Informationen extrahiert, z.B
![]() Hintergrund: eine Windows PE-CD mit Software, die ggfls. eine Internetverbindung braucht (Windows PE ist das "nackte" Mini-Windows, das u.a. auch beim Starten von der Installations-CD verwendet wird). Dazu möchte ich per eigener Anwendung in der Lage sein, TCP/IP-Einstellungen zu verändern (DHCP oder nicht DHCP, IP-Adresse, Subnetzmaske, DNS-Server). Häufig wird als Lösung WMI empfohlen. Das hat den Nachteil, dass das PE um WMI ergänzt werden muss. Das Ergänzen geht für PE 3.0 (das zu Win7 gehört) ganz gut, aber ich will auch älteres unterstützen. Auch das Aufrufen von Kommandozeilen-Tools scheidet aus. Also möchte ich dies per klassischer WinAPI lösen. Dazu habe ich nach Suche hier im Forum IpHlpApi.GetAdaphersAddresses gefunden, womit ich schonmal Informationen auslesen kann (der Auslesen-Teil ist überall im Netz auch immer recht schnell zu finden). Auch AddIPAddress und DeleteIPAddress habe ich erwähnt gefunden. Weiter habe ich mich mit GetUnicastIpAddressTable beschäftigt. Sehr umständliches Ding, noch nicht in IpHlpApi oder sonstiges Units wie Jwa vorhanden, mit den structs habe ich mir sehr schwergetan. Deswegen Frage 1: gibt es in C Unions, deren Variablen die einzelne Bits eines Wertes ansprechen? Siehe ![]()
Code:
Mein Ansatz:
struct NET_LUID {
ULONG64 Value; struct { ULONG64 Reserved :24; ULONG64 NetLuidIndex :24; ULONG64 IfType :16; } Info; };
Delphi-Quellcode:
Da fehlt mir aber nun das sichere Verständnis der C-Struktur - :24 + :24 + :16 sind ja nun 64 bit - fangen die Bits "oben" oder "unten" an z.B.? Oder verstehe ich das ganz falsch?
type
NET_LUID = record Value: UInt64; Info: UInt64; function NetLuidIndex: Word; function IfType: Word; end; function NET_LUID.NetLuidIndex: Word; begin Result := ((Info shr 16) and $FFFFFF); end; function NET_LUID.IfType: Word; begin Result := (Info and $FFFF); end; Oder gibt es gar irgendwo bereits Delphi-Header für MIB_UNICASTADDRESS_TABLE & MIB_UNICASTADDRESS_ROW plus was da dranhängt, die ich nur nicht gefunden habe? Frage 2: gibt es einfachere Ansätze? Immerhin muss das schon vor Vista (die *Unicast*-Funktionen gehen erst ab Vista) funktioniert haben ;) Frage 3: wo ich schonmal dabei bin... sollte jemand das gerade zur Hand haben: welche API beschäftigt sich mit WLAN-Verbindungen? Das käme vermutlich als nächstes. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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 by Thomas Breitkreuz