用vc++如何更改子网掩码?

解决方案 »

  1.   

    ShellExecute
    Dos command: netsh
      

  2.   

    char cmd[256],command[256];
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory( &si, sizeof(si) );
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    _tcscpy(cmd,_T("netsh.exe interface ip"));
    if(_tcscmp(_T("0.0.0.0"),outGateway) != 0)
    wsprintf(command,_T("%s %s %s %s %s %s %s %s"),cmd,"set address",
               connName,"static",outIpAddr,outSubMask,outGateway,"1");
    else
    wsprintf(command,_T("%s %s %s %s %s %s %s"),cmd,"set address",connName,"static",outIpAddr,outSubMask,"none");
     CreateProcess( NULL, command, NULL, NULL, FALSE,CREATE_NO_WINDOW, NULL,NULL, &si, &pi);
      

  3.   

    对于98可以更改注册表生效,但2000是绝对不行的.98不能用netsh命令,只能通过改注册表的方法了.
    需要枚举网卡个数,还要找出ServiceName,再去找网络设置信息.很麻烦的
    也可以这样
    DWORD GetAdaptersInfo(
      PIP_ADAPTER_INFO pAdapterInfo,    // buffer to receive data
      PULONG pOutBufLen                 // size of data returned
    );