IP numarasını değiştirme...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
stnonstop
Üye
Mesajlar: 149
Kayıt: 22 Haz 2005 04:34

IP numarasını değiştirme...

Mesaj gönderen stnonstop »

Arkadaşlar Kod ile ip numarasını değiştirme gibi bir imkanımız var mı. Registerda bir arama yaptım Ip numaramın bir çok yerde geçtiğini gördüm ve bu yerlerin isimleri makinadan makina değişebilecek şekilde yapılmış. Acaba bu ip numarasını komut satırı yardımıyla yada kod ile değiştirmemizi sağlaya bilecek örnek kod vs bulabileceğim bir yer var mı ???
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi

notname
Üye
Mesajlar: 149
Kayıt: 11 Şub 2005 02:15

Mesaj gönderen notname »

ip adresi programla değişmez çünkü sen internete bağlandıgın an şebeken sana bir ip adresi veriyor 85.85.85.85 gibi bu senin bilgisayarındır her bilgisayarın ayrıdır farzetki sen bunu değiştirdin 85.85.85.86 yaptın sence olbilirmi mantıgın alıyormu ? değiştirdigin ip adresin o anda nette kullanıyolar olsa ne gibi bi sonuc cıkar bilemem :)

ancak modeme reset atarsın ve baglandıgın zaman otomaitk olarak kullanılmayan bir ip adresi gelir.

stnonstop
Üye
Mesajlar: 149
Kayıt: 22 Haz 2005 04:34

Mesaj gönderen stnonstop »

Local ağdaki ip numarasından bahsediyordum. Sonuç olarak 2 farklı ağ var ortamda fiziksel olarak da ip numaraları olarakda, 1. Ağ ve 2. Ağ olmak üzere iki adet buton kullanıcı 1. ağa bastığı zaman daha önceden tanımlanmış ağ ayarlarını veya hiç değilse TCP IP numarasını değiştirebilmeyi umuyorum.

Kaldı ki local ağ ile çalıştığımızdan ve sistem admin tarafından bu numaralar verildiğinden sizin söylediğiniz gibi bir sorun çıkmaz çıkarsa bu sistem yöneticisinin hatasıdır.

Bu arada internete bağlanınca bir DHCP sunucusu tarafından bize bir ip adresi atanıyor. Şebeke (PSTN şebekesi) ile alakası yok. Eğer bu şekilde konfigure edilmemiş bir ağa girersek (yani ip numarası otomatik olarak atanmayan Fi tarihinde Raks netin yaptığı gibi) bizim bir ip numarasın belirtmemiz gerekmektedir. Eğer çakışma oluşursa bağlantımız kabul edilmez... Başka bir sonuç veya sorun çıkmaz.

Bu konular çerçevesinde cevap verebilirseniz sevinirim.... Eksik bilgiden dolayı özür dilerim...
St. NonStop
Aziz DURMAZ
Elektronik ve Haberleşme Mühendisi

Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2129
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

bu tip yontemleri kullanmayi pek uygun gormesemde acilse isinize yarayabilir

Kod: Tümünü seç

shellexecute(handle,'open','netsh.exe',
  'interface ip set address "Local Area Connection" ' +
  'static 192.168.1.45 255.255.255.0 192.168.1.1 1',
  nil,sw_hide);

şu adreste başka bir yöntemi var ama ücretli olduğu için okuyamıyoruz

http://www.delphi3000.com/articles/article_4392.asp?SK=

http://msdn.microsoft.com/library/defau ... orking.asp
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Mesaj gönderen mrmarman »

@sadettinpolat yazdı:şu adreste başka bir yöntemi var ama ücretli olduğu için okuyamıyoruz

http://www.delphi3000.com/articles/article_4392.asp?SK=

Kod: Tümünü seç

Answer:


uses ComObj, ActiveX, UrlMon; 

// ====================================================================== 
// SetIpConfig() 
// Set IPAddress, Gateway and Subnetmask via WMI 
// Arguments ... 
// AIpAddress - If Null String or 'DHCP' then DHCP is ENABLED 
//              else STATIC IP is set. 
// AGateWay   - [Optional] If Omitted then GATEWAY is left unchanged. 
// SubnetMask - [Optional] If Omited then default = '255.255.255.0'. 
// 
// SetDnsServers() 
// Set  DNS Servers via WMI 
// Arguments ... 
// APrimaryDNS   - If Null String then DNS Server List is CLEARED. 
// AAlternateDNS - [Optional] 
// 
// Return Values ... 
//   0 Successful completion, no reboot required. 
//   1 Successful completion, reboot required. 
//  -1 Unknown OLE Error 
//  64 Method not supported on this platform. 
//  65 Unknown failure. 
//  66 Invalid subnet mask. 
//  67 An error occurred while processing an instance that was returned. 
//  68 Invalid input parameter. 
//  69 More than five gateways specified. 
//  70 Invalid IP address. 
//  71 Invalid gateway IP address. 
//  72 An error occurred while accessing the registry for the info. 
//  73 Invalid domain name. 
//  74 Invalid host name. 
//  75 No primary or secondary WINS server defined. 
//  76 Invalid file. 
//  77 Invalid system path. 
//  78 File copy failed. 
//  79 Invalid security parameter. 
//  80 Unable to configure TCP/IP service. 
//  81 Unable to configure DHCP service. 
//  82 Unable to renew DHCP lease. 
//  83 Unable to release DHCP lease. 
//  84 IP not enabled on adapter. 
//  85 IPX not enabled on adapter. 
//  86 Frame/network number bounds error. 
//  87 Invalid frame type. 
//  88 Invalid network number. 
//  89 Duplicate network number. 
//  90 Parameter out of bounds. 
//  91 Access denied. 
//  92 Out of memory. 
//  93 Already exists. 
//  94 Path, file, or object not found. 
//  95 Unable to notify service. 
//  96 Unable to notify DNS service. 
//  97 Interface not configurable. 
//  98 Not all DHCP leases could be released or renewed. 
//  100 DHCP not enabled on adapter. 
// ====================================================================== 


// ================================================================== 
// IP Address,Gateway and Subnet Mask 
// EnableStatic takes array of string as a parameter 
// for the Addresses. You may wish to rewrite this using 
// array of string as parameter for multiple IP Addresses. 
// I only have use for 1 IP address and Gateway in our application 
// but it's nice to be able to expand it for other users. 
// ================================================================== 

function SetIpConfig(const AIpAddress : string; 
                     const AGateWay : string = ''; 
                     const ASubnetMask : string = '') : integer; 
var Retvar : integer; 
    oBindObj : IDispatch; 
    oNetAdapters,oNetAdapter, 
    oIpAddress,oGateWay, 
    oWMIService,oSubnetMask : OleVariant; 
    i,iValue : longword; 
    oEnum : IEnumvariant; 
    oCtx : IBindCtx; 
    oMk : IMoniker; 
    sFileObj : widestring; 
begin 
  Retvar := 0; 
  sFileObj := 'winmgmts:\\.\root\cimv2'; 

  // Create OLE [IN} Parameters 
  oIpAddress := VarArrayCreate([1,1],varOleStr); 
  oIpAddress[1] := AIpAddress; 
  oGateWay := VarArrayCreate([1,1],varOleStr); 
  oGateWay[1] := AGateWay; 
  oSubnetMask := VarArrayCreate([1,1],varOleStr); 
  if ASubnetMask = '' then 
    oSubnetMask[1] := '255.255.255.0' 
  else 
    oSubnetMask[1] := ASubnetMask; 

  // Connect to WMI - Emulate API GetObject() 
  OleCheck(CreateBindCtx(0,oCtx)); 
  OleCheck(MkParseDisplayNameEx(oCtx,PWideChar(sFileObj),i,oMk)); 
  OleCheck(oMk.BindToObject(oCtx,nil,IUnknown,oBindObj)); 
  oWMIService := oBindObj; 

  oNetAdapters := oWMIService.ExecQuery('Select * from ' + 
                                        'Win32_NetworkAdapterConfiguration ' + 
                                        'where IPEnabled=TRUE'); 
  oEnum := IUnknown(oNetAdapters._NewEnum) as IEnumVariant; 

  while oEnum.Next(1,oNetAdapter,iValue) = 0 do begin 
    try 
      // Set by DHCP ? (Gateway and Subnet ignored) 
      if (AIpAddress = '') or SameText(AIpAddress,'DHCP') then 
        Retvar := oNetAdapter.EnableDHCP 
      // Set via STATIC ? 
      else begin 
        Retvar := oNetAdapter.EnableStatic(oIpAddress,oSubnetMask); 
        // Change Gateway ? 
        if (Retvar = 0) and (AGateWay <> '') then 
          Retvar := oNetAdapter.SetGateways(oGateway); 

        // *** This is where we need some sort of *** 
        // *** Network Mapped Resource Refresh    *** 
      end; 
    except 
      Retvar := -1; 
    end; 

    oNetAdapter := Unassigned; 
  end; 

  oGateWay := Unassigned; 
  oSubnetMask := Unassigned; 
  oIpAddress := Unassigned; 
  oNetAdapters := Unassigned; 
  oWMIService := Unassigned; 
  Result := Retvar; 
end; 


// ==================================================== 
// Set DNS Servers 
// Instead of Primary and Alternate you may wish 
// to rewrite this using array of string as the 
// parameters as SetDNSServerSearchOrder will take 
// a list of many DNS addresses. I only have use for 
// Primary and Alternate. 
// ==================================================== 

function SetDnsServers(const APrimaryDNS : string; 
                       const AAlternateDNS : string = '') : integer; 
var Retvar : integer; 
    oBindObj : IDispatch; 
    oNetAdapters,oNetAdapter, 
    oDnsAddr,oWMIService : OleVariant; 
    i,iValue,iSize : longword; 
    oEnum : IEnumvariant; 
    oCtx : IBindCtx; 
    oMk : IMoniker; 
    sFileObj : widestring; 
begin 
  Retvar := 0; 
  sFileObj := 'winmgmts:\\.\root\cimv2'; 
  iSize := 0; 
  if APrimaryDNS <> '' then inc(iSize); 
  if AAlternateDNS <> '' then inc(iSize); 

  // Create OLE [IN} Parameters 
  if iSize > 0 then begin 
   oDnsAddr := VarArrayCreate([1,iSize],varOleStr); 
   oDnsAddr[1] := APrimaryDNS; 
   if iSize > 1 then oDnsAddr[2] := AAlternateDNS; 
  end; 

  // Connect to WMI - Emulate API GetObject() 
  OleCheck(CreateBindCtx(0,oCtx)); 
  OleCheck(MkParseDisplayNameEx(oCtx,PWideChar(sFileObj),i,oMk)); 
  OleCheck(oMk.BindToObject(oCtx,nil,IUnknown,oBindObj)); 
  oWMIService := oBindObj; 

  oNetAdapters := oWMIService.ExecQuery('Select * from ' + 
                                        'Win32_NetworkAdapterConfiguration ' + 
                                        'where IPEnabled=TRUE'); 
  oEnum := IUnknown(oNetAdapters._NewEnum) as IEnumVariant; 

  while oEnum.Next(1,oNetAdapter,iValue) = 0 do begin 
    try 
      if iSize > 0 then 
        Retvar := oNetAdapter.SetDNSServerSearchOrder(oDnsAddr) 
      else 
        Retvar := oNetAdapter.SetDNSServerSearchOrder(); 
    except 
      Retvar := -1; 
    end; 

    oNetAdapter := Unassigned; 
  end; 

  oDnsAddr := Unassigned; 
  oNetAdapters := Unassigned; 
  oWMIService := Unassigned; 
  Result := Retvar; 
end; 



(* ---------------------------------------------------- 
See the Miscrosoft MSDN Documentation for the 
Win32_NetworkAdapterConfiguration Class 
(implemented as oNetAdatper in my examples), 
There are many more calls besides EnableStatic, 
EnableDHCP and SetDNBSServerSearchOrder. 

Some of them are ... 

DisableIPSec 
EnableDHCP 
EnableDNS 
EnableIPFilterSec 
EnableIPSec 
EnableStatic 
EnableWINS 
ReleaseDHCPLease 
ReleaseDHCPLeaseAll 
RenewDHCPLease 
RenewDHCPLeaseAll 
SetArpAlwaysSourceRoute 
SetArpUseEtherSNAP 
SetDatabasePath 
SetDeadGWDetect 
SetDefaultTTL 
SetDNSDomain 
SetDNSServerSearchOrder 
SetDNSSuffixSearchOrder 
SetDynamicDNSRegistration 
SetForwardBufferMemory Specifies 
SetGateways 
SetIGMPLevel 
SetIPConnectionMetric 
SetIPUseZeroBroadcast 
SetIPXFrameTypeNetworkPairs 
SetIPXVirtualNetworkNumber 
SetKeepAliveInterval 
SetKeepAliveTime 
SetNumForwardPackets 
SetPMTUBHDetect 
SetPMTUDiscovery 
SetTcpipNetbios 
SetTcpMaxConnectRetransmissions 
SetTcpMaxDataRetransmissions 
SetTcpNumConnections 
SetTcpUseRFC1122UrgentPointer 
SetTcpWindowSize 
SetWINSServer 
------------------------------------------------ *) 
Resim Resim

Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

sadettinpolat yazdı:bu tip yontemleri kullanmayi pek uygun gormesemde acilse isinize yarayabilir

Kod: Tümünü seç

shellexecute(handle,'open','netsh.exe',
  'interface ip set address "Local Area Connection" ' +
  'static 192.168.1.45 255.255.255.0 192.168.1.1 1',
  nil,sw_hide);
Ben kodu deneim ama sanırım eksik bişiler yaptım değiştiremedim ip yi deneyen biri varmı çalıştıran?

Kullanıcı avatarı
proteknikblg
Üye
Mesajlar: 35
Kayıt: 27 Nis 2006 08:39
Konum: Sivas
İletişim:

Mesaj gönderen proteknikblg »

Slm ip değiştirme konusunu forum da aradım ama bir sonuca ulaşamadım bir ethernet kartı ile iki farklı ip gurubunda çalışma yapmam gerekiyor. bunu sürekli elle değiştirmek hem zaman alıyor hemde sıkıntılı oluyor. konu eski bir konu ama bu konuda yardımcı olabilirseniz sevinirim.

ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

ipconfig /release_all
ipconfig_renew

not:parametreleri kontrol ediniz.

yanız bu dgcp den gelen lokal ip yi yeniler. ip yi ben atayacağım diyorsanız bilemem
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog

Kullanıcı avatarı
proteknikblg
Üye
Mesajlar: 35
Kayıt: 27 Nis 2006 08:39
Konum: Sivas
İletişim:

Mesaj gönderen proteknikblg »

tsk. ama dediğiniz gibi girilmesi gereken iki ip de belli yani elle atanması gerekiyor

ertemsoft
Üye
Mesajlar: 129
Kayıt: 19 Nis 2005 01:22
İletişim:

Mesaj gönderen ertemsoft »

Mrb.

http://rapidshare.com/files/66425281/ipchange.zip.html

sanırım sorununu çözecektir kaynak kod içindedir. kolay gelsin
Bilgi Paylaştıkça Çoğalır

Kullanıcı avatarı
proteknikblg
Üye
Mesajlar: 35
Kayıt: 27 Nis 2006 08:39
Konum: Sivas
İletişim:

Mesaj gönderen proteknikblg »

Slm ertemsoft
gönderdiğin prg için çok teşekkür ederim tam istediğim kodları içeriyor. Denemesini yaptım xp de sorunsuz çalışıyor vistada sonuç vermedi ama kullanacağım yerde xp olduğu için sorunum kalmadı.

myalcin
Üye
Mesajlar: 63
Kayıt: 11 Mar 2008 03:45

Re: IP numarasını değiştirme...

Mesaj gönderen myalcin »

Cevap için teşekkürler. Mesela ip yi istediğimiz gibi atadık. Bundan sonra tekrar otomatik bir ip almasını istiyoruz .Bunu nasıl yapabiliriz?

ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: IP numarasını değiştirme...

Mesaj gönderen ikutluay »

myalcin yazdı:Cevap için teşekkürler. Mesela ip yi istediğimiz gibi atadık. Bundan sonra tekrar otomatik bir ip almasını istiyoruz .Bunu nasıl yapabiliriz?

shell execute ile daha önceki cevabımdaki komutları çalıştırarak
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog

myalcin
Üye
Mesajlar: 63
Kayıt: 11 Mar 2008 03:45

Re: IP numarasını değiştirme...

Mesaj gönderen myalcin »

şöyle bir çözüm buldum

Kod: Tümünü seç

SetIpConfig('','','');
bunu yaptığımızda direkt olarak otomatik bir ip alıyor.

Cevapla