我试着通过修改注册表,但是delphi 7里面不提供对reg_multi_sz类型(ip,子网掩码都是这种类型的)操作的方法,我利用regsetvalueex写完之后,在“我的连接”“属性”中查看“tcp/ip"的高级选项时,就会出现很多乱码那位大侠能够帮助,多谢多谢

解决方案 »

  1.   

    我这里有个例子,要源码吗?
    http://www.web1688.com/ip.rar
      

  2.   

    调用dos命令
    用winexec执行
    netsh interface ip set address 本地连接 static 192.168.1.1 255.255.255.0 192.168.1.1 1
      

  3.   

    晓松老兄,能给http://www.web1688.com/ip.rar的源码吗?我可能要改动,但我会将改完的源码给你,决不侵权
      

  4.   

    procedure ChangeIP();
    var
      TmpReg:HKEY;
      sIP,sMask:string;
      wsIP,wsMask:array [0..16000] of char;
      iIP,iMask,i:integer;
    begin
      iIp:=0;iMask:=0;i:=0;
      FillChar(wsIP,sizeOf(wsIP),#0);
      FillChar(wsMask,sizeOf(wsMask),#0);
      sIP:=192.168.1.1;sMask:=255.255.255.0;
      iIP:=length(strIP)+1;iMask:=length(strMask)+1;
     strReg:='SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{122223222222222222222222}';//网卡
      for i:=0 to iIP-1 do
        wsIP[i]:=sIP[i+1];
      for i:=0 to iMask-1 do
        wsMask[i]:=sMask[i+1];  if RegOpenKeyEx(HKEY_LOCAL_MACHINE,Pchar(strReg),0,KEY_WRITE,TmpReg) = ERROR_SUCCESS then
        try
          RegSetValueEx(TmpReg, PChar('IPAddress'),0, REG_MULTI_SZ, @wsIP, iIP);
        finally
          RegCloseKey(TmpReg);
        end;
      if RegOpenKeyEx(HKEY_LOCAL_MACHINE,Pchar(strReg),0,KEY_WRITE,TmpReg) = ERROR_SUCCESS then
        try
          RegSetValueEx(TmpReg, PChar('SubnetMask'),0, REG_MULTI_SZ,@wsMask, imask);
        finally
          RegCloseKey(TmpReg);
        end;
    end;