如题,他返回给我的值是33,说明成功了嘛,为什么dns里面的东西没被改了呢。我有获取到数据,可是就是没有修改成功,上面的ip地址成功了,
网络上有重名会影响吗??
好神奇啊!!!

解决方案 »

  1.   

    //------------自定义函数等待执行并返回--------------------------
    function   WinExecAndWait(strFileName: string;   uCmdShow:   UINT):DWORD;
    var
          cAppName:   array   [0..512]   of   char;
          cCurDir:   array   [0..255]   of   char;
          strWorkDir:   string;
          StartupInfo:   TStartupInfo;
          ProcessInfo:   TProcessInformation;
    begin
          StrPCopy(cAppName,   strFileName);
          GetDir(0,   strWorkDir);
          StrPCopy(cCurDir,   strWorkDir);
          FillChar(StartupInfo,   Sizeof(StartupInfo),   #0);
          StartupInfo.cb   :=   SizeOf(StartupInfo);
          StartupInfo.dwFlags   :=   STARTF_USESHOWWINDOW;
          StartupInfo.wShowWindow   :=   uCmdShow;
          if not CreateProcess(nil,   cAppName,   nil,   nil,   true,   CREATE_NEW_CONSOLE   or   NORMAL_PRIORITY_CLASS,
              nil,   nil,   StartupInfo,   ProcessInfo)   then
              Result   :=   INFINITE
          else
          begin
              WaitforSingleObject(ProcessInfo.hProcess,   INFINITE);
              GetExitCodeProcess(ProcessInfo.hProcess,   Result);
              CloseHandle(ProcessInfo.hProcess);
              CloseHandle(ProcessInfo.hThread);
          end;
    end;
    procedure TForm1.btnModifyClick(Sender: TObject);
    begin
    WinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" source=static addr='+edtIP.Text+' mask='+edtMask.Text,SW_HIDE);
    WinExecAndWait('netsh interface ip set address name= "'+edtName.Text+'" gateway='+edtGateway.Text+' gwmetric=0',SW_HIDE);
    WinExecAndWait('netsh interface ip set dns name= "'+edtName.Text+'" source=static addr='+edtDNS1.Text+' register=PRIMARY',SW_HIDE);
    WinExecAndWait('netsh interface ip add dns name= "'+edtName.Text+'" addr='+edtDNS2.Text+' index=2',SW_HIDE);
    WinExecAndWait('netsh interface ip set wins name= "'+edtName.Text+'" source=static addr=none',SW_HIDE);