vc++ 中如何读取和修改MAC的地址
解决方案 »
- 向VIEW类发送消息出错
- 模块和class的区别是什么
- 请问VC 6.0 的Picture控件怎么用?
- 类的一个方法可以被创建成新的线程么?
- 汉字如何按照音序排列?
- 在扩展存储过程(dll)中可否调用VC++的dll.反之可否在VC++中应用程序中可否调用扩展存储过程(dll文件)
- 如何利用Windows Html Help Workshop 制作有按钮的chm格式的文件?
- visual studio.net中文正式版的版本号是多少?
- 处女作(DbSpy)发布,可以将两个数据库的结构进行对照输出,欢迎大家提宝贵意见。
- CListCtrl的数据对齐的问题
- 如何在VC中使用Hashtable
- 网络诊断的问题,高手们进来看看。
{
//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地址的方法,修改不会。
关注中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
关于修改的LS几位说的都是修改操作系统上的
其实MAC是保存在网卡上可擦写芯片里面,是可以改的,不过具体我不知道怎么做(我是学软件的^_^)关注中...........
能修改的只是有系统管理的虚拟MAC。
注册表中还有一个。绝大部分程序都是处理注册表里的mac地址。