IP Address Swapping

Environment: VC 6, NT4

This is an application used to swap the IP address. For connecting to a computer in different domain the user has to change the IP address through the Network properties, for this the user has to follow 3 to 4 steps.

In this application, the IP address of your computer will be displayed in the listbox,the user can double click it to set it as the current IP address.

  • This application can be used only in Windows NT 4.0
  • The user should have the administrator privilege

This is a trial version for swapping the IP address in your computer. Later version will be updated frequently

Warning:This application uses the registry for manipulating the IP address.

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

// IPswapDlg.cpp : implementation file

#include "stdafx.h"
#include "IPswap.h"
#include "IPswapDlg.h"


BOOL CIPswapDlg::OnInitDialog()
{

  IPList=(CListBox*)GetDlgItem(IDC_IPADDLST);
  HKEY AppKey = NULL;
  LONG lRet1 = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
     "SYSTEM\\CurrentControlSet\\Services\\NetBT\\Linkage",
     0,
     KEY_EXECUTE|KEY_READ|KEY_ALL_ACCESS,
     &AppKey);
  DWORD dwS=MAXPATH;
  unsigned char szPath[MAXPATH];
  if(RegQueryValueEx(AppKey,"Bind",NULL,NULL,szPath,&dwS))
  {
    AfxMessageBox("Error Accessing Registry");
  }
  NetAdapt=(CString)szPath;
  NetAdapt.MakeReverse();
  int slash=NetAdapt.Find("\\",0);
  NetAdapt=NetAdapt.Left(slash);
  NetAdapt.MakeReverse();
  IPList->ResetContent();
  HKEY AppPathKey = NULL;

  LONG lRet = RegOpenKeyEx(
     HKEY_LOCAL_MACHINE,
     "SYSTEM\\CurrentControlSet\\Services\\"+
            NetAdapt+"\\Parameters\\Tcpip",
     0,
     KEY_EXECUTE|KEY_READ|KEY_ALL_ACCESS,
     &AppPathKey);
  DWORD dwSize = MAXPATH;
  DWORD dwSize1 = MAXPATH;
  unsigned char szAppPath[MAXPATH];
  unsigned char szAppPath1[MAXPATH];
  CString FullIP,SubnetMask;
  if( RegQueryValueEx( AppPathKey,
                       "IpAddress",
                       NULL,
                       NULL,
                       szAppPath,
                       &dwSize)!= ERROR_SUCCESS )
  {
     AfxMessageBox("Error while Accessing registry");
     return 0;
  }
  else
  {
     for(int i=0;i<255;i++)
       if((CString)szAppPath[i]!="")
       FullIP=FullIP+(CString)szAppPath[i];
       else
       {
          if(FullIP.GetLength()>=8)
          {
            IPList->AddString(FullIP);
          }

          FullIP="";
       }

  }

  if(RegQueryValueEx( AppPathKey,
                      "SubnetMask",
                      NULL,
                      NULL,
                      szAppPath1,
                      &dwSize1)!= ERROR_SUCCESS )
  {
     AfxMessageBox("Error while Accessing registry");
     return 0;
  }
  else{

     for(int i=0;i<255;i++)
       if((CString)szAppPath1[i]!="")
       SubnetMask=SubnetMask+(CString)szAppPath1[i];
       else
       {
         if(SubnetMask.GetLength()>=8)
         {
         subnetarray.Add(SubnetMask); 
         }
        
         SubnetMask="";
       }
       
  }



  RegCloseKey(AppPathKey);

  return TRUE;  // return TRUE  unless you set 
                // the focus to a control
}


void CIPswapDlg::OnDblclkIpaddlst() 
{
  CString teststr,teststr1;
  CString iptobemoved=iparray.GetAt(0);
  CString subnettobemoved=subnetarray.GetAt(0);

  int curr=IPList->GetCurSel();
  if(curr==0) return;
  teststr=iparray.GetAt(curr);
  teststr1=subnetarray.GetAt(curr);

  iparray.SetAt(curr,iptobemoved);
  iparray.SetAt(0,teststr);
  subnetarray.SetAt(curr,subnettobemoved);
  subnetarray.SetAt(0,teststr1);

  IPList->ResetContent();

  HKEY AppPathKey = NULL;
  LONG lRet = RegOpenKeyEx(  HKEY_LOCAL_MACHINE,
                "SYSTEM\\CurrentControlSet\\Services\\"+
                NetAdapt+"\\Parameters\\Tcpip",
                0,
                KEY_EXECUTE|KEY_READ|KEY_ALL_ACCESS,
                &AppPathKey);

  DWORD dwSize = MAXPATH;
  unsigned char szAppPath[MAXPATH];
  CString FullIP;
  if(RegQueryValueEx( AppPathKey,
                      "IpAddress",
                      NULL,
                      NULL,
                      szAppPath,
                      &dwSize)!= ERROR_SUCCESS )
  {
     AfxMessageBox("Error while Accessing registry");
     return;
  }
  int z=0;
  unsigned char ii[100];
  unsigned char subne[100];
  CString ip,sn;

  for(int p=0;p<=iparray.GetSize()-1;p++)
  {
     ip=iparray.GetAt(p);
     for(int k=0;k<=ip.GetLength()-1;k++)
     {
       ii[z]=ip.GetAt(k);
       z=z+1;
     }
     ii[z]='\0';
     z++;
  }
  int x=0;
  for(int q=0;q<=subnetarray.GetSize()-1;q++)
  {
     sn=subnetarray.GetAt(q);
     for(int k=0;k<=sn.GetLength()-1;k++)
     {
       subne[x]=sn.GetAt(k);
       x=x+1;
     }
     subne[x]='\0';
     x++;
  }


  RegSetValueEx(AppPathKey,"IpAddress",0,REG_MULTI_SZ,ii,z);
  RegSetValueEx(AppPathKey,"SubnetMask",0,REG_MULTI_SZ,subne,x);
  RegCloseKey(AppPathKey);
  for(int j=0;j<=iparray.GetSize()-1;j++)
  {
     IPList->AddString(iparray.GetAt(j));
  }

     MessageBox("Successfully swaped");
}

Downloads

Download demo project - 9Kb
Download source - 22Kb