![]() |
fest eingestellte IP-Adressen mittels Programm ändern
Ich hab mal wieder ein IP-Problem. :P
Ist es möglich, eine fest eingestellte IP-Adresse mittels Delphi-Programm zu ändern? Ich hab hier ein Programm, das das eigentlich tun sollte, es funktioniert aber nicht. Ich kann verschiedene IPs eingeben, das System startet neu, aber es ändert sich nichts. (Habe die automatische Zuweisung durch den DHCP ausgeschalten) Das Programm ist nicht von mir, darum kann ich nur mutmaßen, was für den Eintrag gedacht ist. Vielleicht dies hier:
Delphi-Quellcode:
begin
MAC_CRS:=CMac + IdentPunkt; TSAP_SPS:=IdentPunkt + '_CRS'; TSAP_CRS:='CRS_' + IdentPunkt; Ini.WriteString('IP', 'IP_SPS',IP_SPS); Ini.WriteString('IP', 'IP_CRS',IP_CRS); Ini.WriteString('IP', 'Subnet',Subnet_CRS); Ini.WriteString('IP', 'Gateway',Gateway_CRS); Ini.WriteString('Identpunkt', 'Identpunkt',IdentPunkt); Ini.WriteString('Ethernet', 'MAC_SPS',MAC_SPS); Ini.WriteString('Ethernet', 'MAC_CRS',MAC_CRS); Ini.WriteString('Ethernet', 'TSAP_SPS',TSAP_SPS); Ini.WriteString('Ethernet', 'TSAP_CRS',TSAP_CRS); Ini.WriteString('Kamera', 'Trigger',Trigger); if IP_CRS <> '' then begin registryEintrag; reeboot; halt; end; end else begin IP_SPS:=Ini.ReadString('IP', 'IP_SPS',IP_SPS); IP_CRS:=Ini.ReadString('IP', 'IP_CRS',IP_CRS); Subnet_CRS:=Ini.ReadString('IP', 'Subnet',Subnet_CRS); Gateway_CRS:=Ini.ReadString('IP', 'Gateway',Gateway_CRS); MAC_SPS:=Ini.ReadString('Ethernet', 'MAC_SPS',MAC_SPS); MAC_CRS:=Ini.ReadString('Ethernet', 'MAC_CRS',MAC_CRS); TSAP_SPS:=Ini.ReadString('Ethernet', 'TSAP_SPS',TSAP_SPS); TSAP_CRS:=Ini.ReadString('Ethernet', 'TSAP_CRS',TSAP_CRS); Trigger:=Ini.ReadString('Kamera', 'Trigger',Trigger); NurTNR:=Ini.ReadString('Modus', 'NurTNR',NurTNR); end; |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Hallo Kara,
Zitat:
Zitat:
Wenn du die IP-Adresse eines Windows PC per Programm ändern möchtest, dann ist vielleicht dieser thread für dich von Interesse: ![]() Andernfalls solltest du mehr Informationen geben. Grüße vom marabu |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Ah, ja, das hilft mir weiter. Danke!
Das wird aber ein ganzes Stück Arbeit, das unter zu bringen. Ich habe festgestellt, dass mein Vorgänger die IP-Adresse in die Registry schreibt. Dort ändern sich die IPs auch. Hilft das denn was? "set address..." oder netsh hab ich nirgends gefunden. Mit fehlt etwas das Verständnis dafür, dass er das gemacht hat. Das Programm war ursprünglich für Win NT gedacht und wird jetzt unter XP genutzt. Aber das sollte eigentlicht nicht ausschlaggebend sein, oder?
Delphi-Quellcode:
Vielleicht hilft das eher? Ich blick nicht durch, was da eigentlich abläuft :shock:
procedure TFormMain.registryEintrag;
var regist:TRegistry; Schluessel:String; Schluessel1:String; Schluessel2:String; i:integer; ip:string; x:integer; card:string; begin if IP_CRS <>'' then begin regist:=TRegistry.Create; try card:=wertAusRegistryHolen('ServiceName','SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\NetworkCards\1'); regist.rootkey:=HKEY_LOCAL_MACHINE; Schluessel1:='SYSTEM\CurrentControlSet\Services'; Schluessel2:='\Parameters\Tcpip'; Schluessel:=Schluessel1 + '\' + card + Schluessel2; if not regist.KeyExists(Schluessel) then begin Schluessel:=Schluessel1 + '\N1001' + Schluessel2; if not regist.KeyExists(Schluessel) then begin Schluessel:=Schluessel1 + '\E100B' + Schluessel2; if not regist.KeyExists(Schluessel) then begin Schluessel:=Schluessel1 + '\E100B1' + Schluessel2; if not regist.KeyExists(Schluessel) then begin Schluessel:=Schluessel1 + '\Elnk31' + Schluessel2; if not regist.KeyExists(Schluessel) then begin Schluessel:=Schluessel1 + '\Elnk32' + Schluessel2; if not regist.KeyExists(Schluessel) then begin Showmessage('Achtung Fehlender Schlüssel in Registry!'); exit; end; end; end; end; end; end; wertInRegistryEintragen(IP_CRS,Schluessel,'IPAddress',REG_MULTI_SZ); wertInRegistryEintragen('255.255.255.' + Subnet_CRS,Schluessel,'SubnetMask',REG_MULTI_SZ); ip:=''; x:=0; for i := 1 to length(IP_CRS) do begin if copy(IP_CRS,i,1)[1]='.' then inc(x); if x < 3 then ip:=ip+copy(IP_CRS,i,1)[1]; end; ip:=ip + '.' + Gateway_CRS; wertInRegistryEintragen(ip,Schluessel,'DefaultGateway',REG_MULTI_SZ); finally regist.free; end; end; end; |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Ja, daran hab ich auch schon gedacht, aber dann musst du IMHO wohl oder übel einen Neustart machen.
|
Re: fest eingestellte IP-Adressen mittels Programm ändern
Das tu ich :lol:
Die Werte werden in der Registry auch übernommen. Aber auf die Netzwerkeinstellungen hat das keinerlei Einfluss. |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Hallo Kara,
auf welchen Windows-Versionen soll denn das Programm laufen? Arbeitest du wirklich mit Delphi 2? Kannst du NETSH in einem Konsolfenster starten? marabu |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Zitat:
Und dass du die Falsche Karte erwischt hast? Also der Letzte Schlüssel lautet ja 1. Vielleicht gibz die Karte net.. :S Hab hier noch was gefunden bei mir in der Registry (XP):
Code:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network
|
Re: fest eingestellte IP-Adressen mittels Programm ändern
Marabu: Wie gesagt, das Programm wurde für NT geschrieben und soll jetzt unter XP laufen.
Ich arbeite tatsächlich unter Delphi 2. Meine Arbeitsstelle ist da nicht so... :mrgreen: Wurde eventuell unter NT die Eintragung aus der Registry in die Netzwerkeinstellungen übernommen und unter XP nicht mehr? Faux: :shock: Da werd ich glatt mal nachschauen |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Kara,
ich habe leider keinen Zugriff auf D2 und kann mich auch nicht so gut daran erinnern, aber das angehängte Programm habe ich in D7 erstellt und es stellt die IP Adresse ohne API Aufrufe mit Hilfe von NETSH ein. Vielleicht kannst du ja etwas davon verwenden, um den Direktzugriff auf die registry aus deinem Programm zu verbannen. marabu |
Re: fest eingestellte IP-Adressen mittels Programm ändern
Ist es denn schlecht, dass das Prog in die Registry eingreift?
Ich hätte das einfach gelassen und zusätzlich die Änderung der Netzwerkeinstellung mit dazu. (Schön muss es nicht sein) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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