Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi fest eingestellte IP-Adressen mittels Programm ändern (https://www.delphipraxis.net/51683-fest-eingestellte-ip-adressen-mittels-programm-aendern.html)

Kara 17. Aug 2005 08:08


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;

marabu 17. Aug 2005 08:43

Re: fest eingestellte IP-Adressen mittels Programm ändern
 
Hallo Kara,

Zitat:

Zitat von Kara
Ist es möglich, eine fest eingestellte IP-Adresse mittels Delphi-Programm zu ändern?

Das kommt darauf an, wie fest sie eingestellt ist. Wenn sie hardwaremäßig (in einem ROM oder EPROM) festgelegt ist, dann eher nicht...

Zitat:

Zitat von Kara
Ich hab hier ein Programm, das das eigentlich tun sollte, es funktioniert aber nicht.

Ich kann mich täuschen, aber der von dir gezeigte Programmausschnitt scheint mir nichts mit dem Windows TCP/IP Stack zu machen.

Wenn du die IP-Adresse eines Windows PC per Programm ändern möchtest, dann ist vielleicht dieser thread für dich von Interesse: klick

Andernfalls solltest du mehr Informationen geben.

Grüße vom marabu

Kara 17. Aug 2005 09:11

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:
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;
Vielleicht hilft das eher? Ich blick nicht durch, was da eigentlich abläuft :shock:

faux 17. Aug 2005 09:14

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.

Kara 17. Aug 2005 09:22

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.

marabu 17. Aug 2005 09:43

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

faux 17. Aug 2005 09:47

Re: fest eingestellte IP-Adressen mittels Programm ändern
 
Zitat:

Zitat von Kara
Die Werte werden in der Registry auch übernommen. Aber auf die Netzwerkeinstellungen hat das keinerlei Einfluss.

LOL...

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

Kara 17. Aug 2005 09:51

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

marabu 17. Aug 2005 11:31

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

Kara 17. Aug 2005 11:41

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 07:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz