vc++ 中如何读取和修改MAC的地址

解决方案 »

  1.   

    CString  GetMacByCmd()
    {
    //command buf size
    const long lBufSize = 4096;
    //command line string
    char szFetCmd[] = "ipconfig /all";
    //Search string
    string str4Search = "Physical Address. . . . . . . . . : "; CString strRet = _T("");
    BOOL bRet;
    SECURITY_ATTRIBUTES sa; 
    HANDLE hReadPipe,hWritePipe; //Init
    sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
    sa.lpSecurityDescriptor = NULL; 
    sa.bInheritHandle = TRUE; 
     
    //Create pipe
    bRet = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0);
    if(FALSE == bRet)
    {
    return strRet;
    } //Get infomation
    STARTUPINFO si;
    PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); 
    GetStartupInfo(&si); si.hStdError = hWritePipe; 
    si.hStdOutput = hWritePipe; 
    si.wShowWindow = SW_HIDE; //Hide command windows
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; //Create command process
    bRet = CreateProcess (NULL, szFetCmd, NULL, NULL, TRUE, 0, NULL, 
      NULL, &si, &pi );

    char szBuffer[lBufSize + 1];
    string strBuffer;
    if (TRUE == bRet) 

    WaitForSingleObject (pi.hProcess, INFINITE); 

    //Read infomation
    unsigned long count;
    memset(szBuffer, 0x00, sizeof(szBuffer));
    bRet  =  ReadFile(hReadPipe,  szBuffer,  lBufSize,  &count,  0);
    if(TRUE == bRet)
    {
    strBuffer = szBuffer;
    long ipos;
    ipos = strBuffer.find(str4Search); //Get adress infomation
    strBuffer = strBuffer.substr(ipos+str4Search.length());
    ipos = strBuffer.find("\n");
    strBuffer = strBuffer.substr(0, ipos);
    strRet.Format("%s", strBuffer.c_str());  //remove“00-50-EB-0F-27-82”'-' get 0050EB0F2782
    strRet.Remove('-'); strRet = strRet.Left(strRet.GetLength() - 2 );
    }
    }

    //close handle
    CloseHandle(hWritePipe);
    CloseHandle(pi.hProcess); 
    CloseHandle(pi.hThread); 
    CloseHandle(hReadPipe); return strRet;
    }
    这个是读取MAC地址的方法,修改不会。
    关注中
      

  2.   

    MAC 地址是写在网卡的ROM上不可能被改变的。
      

  3.   

    可以改,注册表的某个地方吧。设备管理器->点网卡->属性->高级->下边有个Adderss,然后填入一个值,就修改了MAC,这个值肯定是记录在注册表的
      

  4.   

    网卡上的MAC不好改, 但是实际操作系统可以自定义MAC 在注册表中
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\ 
      

  5.   

    读取的1楼说了
    关于修改的LS几位说的都是修改操作系统上的
    其实MAC是保存在网卡上可擦写芯片里面,是可以改的,不过具体我不知道怎么做(我是学软件的^_^)关注中...........
      

  6.   

    可以改的,我想知道在VC++中修改MAC地址的方法
      

  7.   

    mac地址不是固化的吗?从没听说过修改mac地址的
      

  8.   

    可以改的,具体查一下MSDN中关于网卡的函数,我想问的是如何让修改后的MAC地址立即生效呢?
      

  9.   

    固化在网卡上的MAC根本不能修改。
    能修改的只是有系统管理的虚拟MAC。
      

  10.   

    可以改是肯定的 是伪装的改 Google吧 我看过例子!
      

  11.   

    满网络是改MAC地址的程序,居然还有人说不能改.说不能改的,自己去查下smac这软件.http://www.klcconsulting.net/smac/
      

  12.   


    注册表中还有一个。绝大部分程序都是处理注册表里的mac地址。