![]() |
IP mit netsh sichern/wiederherstellen
Moin.
Habe mich jetzt durch alle relevanten Foren gewühlt. Wenn ich folgenden Befehl
Delphi-Quellcode:
ausführe listet er im Command-Fenster die Konfiguration auf - speichert diese aber nicht auf C:\ :(
ShellExecute(Application.Handle, 'open', 'netsh', 'interface dump >C:\ip_config.txt', nil, SW_SHOW);
Auch das Setzen der Konfiguration mittels
Delphi-Quellcode:
funktioniert nicht.
ShellExecute(Application.Handle, 'open', 'netsh', '-f C:\ip_config.txt', nil, SW_SHOW);
Was mache ich falsch? |
Re: IP mit netsh sichern/wiederherstellen
Versuche es mal bitte so:
Delphi-Quellcode:
Grüße
ShellExecute(Application.Handle, 'open', pchar('netsh'), pchar('interface dump >C:\ip_config.txt'), nil, SW_SHOW);
Klaus |
Re: IP mit netsh sichern/wiederherstellen
Negativ - klappt nicht :(
Wenn ich den Befehl in der Cmd-Umgebung starte, listet er mir die Daten nicht auf, sondern schreibt sie in die Datei. Durch Delphi ausgeführt, werden die Daten in der Umgebung aufgelistet. Ist bald so, als ob er dann den dump-Parameter ignoriert. |
Re: IP mit netsh sichern/wiederherstellen
Das kenn ich führe einfach CMD stat netsh aus dann gehts
|
Re: IP mit netsh sichern/wiederherstellen
Ash shit.....
Ich hab da mal nen Dienst geschrieben der dem Rechner beim starten ne neue / zusätzliche IP verpasst und beim beenden wieder wegnimmt. Das ging allerdings glaub ich nicht über netsh sondern via API. Nur wo hab ich nur die Soße...? Geb mir ein, zwei Stündchen... |
Re: IP mit netsh sichern/wiederherstellen
Wer suchet der findet:
Hiermit geht es:
Delphi-Quellcode:
Grüße
Procedure ExecuteShellCommand( const cmdline: String; hidden: Boolean );
Const flags : Array [Boolean] of Integer = (SW_SHOWNORMAL, SW_HIDE); Var cmdbuffer: Array [0..MAX_PATH] of Char; Begin GetEnvironmentVariable( 'COMSPEC', cmdBUffer, Sizeof(cmdBuffer)); StrCat( cmdbuffer, ' /C '); StrPCopy( StrEnd(cmdbuffer), cmdline ); WinExec( cmdbuffer, flags[hidden] ); End; ExecuteShellCommand('netsh.exe interface dump > C:\ip_config.txt',false); Klaus |
Re: IP mit netsh sichern/wiederherstellen
Ging doch flotter ;)
Also, ich hab die IPHelperAPI aus den Jedis benutzt. die Lokale IP Adresse erhältst Du dort mit VVGetIpAddrTable:
Delphi-Quellcode:
Das IpAddressToString ist was kurzes eigenes:
//------------------------------------------------------------------------------
// Datum : 19.06.2006 // Author: Sebastian Gingter procedure TMyService.getLocalIpAddresses(var addr: TStringList; var idx: TStringList); var size: ulong; p: PMibIpAddrTable; i: integer; begin VVGetIpAddrTable(p, size, true); if p <> nil then begin try with p^ do begin for i := 0 to dwNumEntries-1 do with table[i] do begin addr.Add(Format('%s', [IpAddressToString(dwAddr)])); idx.Add(Format('%d', [dwIndex])); end; end; finally freeMem(p); end; end; end;
Delphi-Quellcode:
Und dann das setzen:
//------------------------------------------------------------------------------
// Datum : 19.06.2006 // Author: Sebastian Gingter function TMyService.IpAddressToString(Addr: DWORD): string; var InAddr: TInAddr; begin InAddr.S_addr := Addr; Result := inet_ntoa(InAddr); end;
Delphi-Quellcode:
Wichtig dabei ist, dass Du in der oben gezeigten Variante mindestens eine IP Adresse kennst, die schon auf dem Interface sitzt (in m_referenceIP). Sonst wird es Dir zwangsläufig passieren, dass Du die IP auf dem falschen Interface setzt und damit ggf. auf dem WLAN eine IP setzt die eigentlich am Kabel anliegen sollte.
//------------------------------------------------------------------------------
// Datum : 19.06.2006 // Author: Sebastian Gingter function TMyService.CheckAndObtainIPAdress: boolean; var l_addresses: TStringList; l_indices: TStringList; i: integer; begin // Handle on new IP Address m_NTEContext := 0; m_NTEInstance := 0; m_IpSelfSet := false; l_addresses := TStringList.Create; l_indices := TSTringList.Create; try // First check local IP addresses for target address (store in result): getLocalIpAddresses(l_addresses, l_indices); i := l_addresses.IndexOf(IPAddress); result := (i <> -1); m_ipAlreadySet := result; if not m_ipAlreadySet then begin if true { isIpAvailable } then begin // Get interface to set: i := l_addresses.IndexOf(m_referenceIP); if (i <> -1) then begin result := ObtainIPAddress( StrToInt(l_indices[i]) ); end; end; end; finally FreeAndNil(l_addresses); FreeAndNil(l_indices); end; end; Naja.. ich denke das dürfte schonmal ein Stückchen helfen. |
Re: IP mit netsh sichern/wiederherstellen
Ich danke euch allen.
Jetzt funktioniert es :thumb: |
Re: IP mit netsh sichern/wiederherstellen
@Klasu:
![]() |
Re: IP mit netsh sichern/wiederherstellen
Habe eine Mischung von Klaus + CreateProcess genommen.
Und die funzt sehr gut. ICH DANKE ALLEN, DIE SICH IHREN KOPF ZERBROCHEN HABEN !!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 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