如何取得有线网卡的MAC地址?

梦断酒醒 2011-02-25 10:07:39
在Linux下如果同时包含有有线网卡与无线网卡,如何识别它们并取得其MAC地址?
我必须知道它是有线的还是无线的。
谢谢。
...全文
441 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞翔的薄荷 2011-03-02
  • 打赏
  • 举报
回复
//读注册表
参考文章
http://hi.baidu.com/my_zck/blog/item/70749a1629842107c83d6dd8.html

BOOL FindNetworkCards(vector<NETWORKCARDS*> &m_listcards)
{
HKEY hKey = NULL, hSubKey = NULL;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
//"System\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}",
_T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards"),
0,
KEY_READ,
&hKey) != ERROR_SUCCESS)
{
return FALSE;
}

DWORD dwIndex = 0;
DWORD dwBufSize = 256;
DWORD dwDataType;
TCHAR szSubKey[256] = {0};
unsigned char szData[256] = {0};

//int a = 0;
while(RegEnumKeyEx(hKey, dwIndex++, szSubKey, &dwBufSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
{
//MessageBox(0,szSubKey,0,0);
if(RegOpenKeyEx(hKey, szSubKey, 0, KEY_READ, &hSubKey) == ERROR_SUCCESS)
{
dwBufSize = 256;
if((RegQueryValueEx(hSubKey, _T("Description"), 0, &dwDataType, szData, &dwBufSize)) == ERROR_SUCCESS)
{
//MessageBox(0,(LPCWSTR)szData,0,0);
CString str_temp(((TCHAR*)szData));
str_temp.MakeLower();
if(-1==str_temp.Find(_T("atheros")))
//if(-1!=str_temp.Find(_T("realtek")))
{
dwBufSize = 256;
NETWORKCARDS *temp = new NETWORKCARDS();
//ZeroMemory(pstcNa,sizeof(stcName));
if((RegQueryValueEx(hSubKey, _T("ServiceName"), 0, &dwDataType, szData, &dwBufSize)) == ERROR_SUCCESS)
{

#ifdef _UNICODE
wcscpy(temp->ServiceName,(const wchar_t * const)szData);
#else
strcpy(temp->ServiceName,(const char * const)szData);
#endif

//delete temp;
}
else
{
continue;
}
if((RegQueryValueEx(hSubKey, _T("Description"), 0, &dwDataType, szData, &dwBufSize)) == ERROR_SUCCESS)
{

#ifdef _UNICODE
wcscpy(temp->Description,(const wchar_t * const)szData);
#else
strcpy(temp->Description,(const char * const)szData);
#endif

}
FindLinkName(temp->ServiceName,temp);
FindIPByCards(temp->ServiceName,temp);
m_listcards.push_back(temp);
}
//MessageBox(0,(LPCWSTR)szData,0,0);
}

}
dwBufSize = 256;
}
if(dwIndex) return true;
return false;
}
p307969066 2011-03-02
  • 打赏
  • 举报
回复
使用ioctl函数
rendao0563 2011-02-27
  • 打赏
  • 举报
回复
枚举设备
giant7 2011-02-27
  • 打赏
  • 举报
回复
netbios
梦断酒醒 2011-02-27
  • 打赏
  • 举报
回复
没有人做过?
jackiesen 2011-02-27
  • 打赏
  • 举报
回复
ifconfig
NowDoIT 2011-02-25
  • 打赏
  • 举报
回复
读取主机的配置文件或者硬件信息,有这个文件的吧。
tompaz 2011-02-25
  • 打赏
  • 举报
回复
netbios
梦断酒醒 2011-02-25
  • 打赏
  • 举报
回复
我要在代码中实现。
pathuang68 2011-02-25
  • 打赏
  • 举报
回复
用libcap
求伯君 2011-02-25
  • 打赏
  • 举报
回复
呵呵 今天老师讲了 IPconfig\all 是吧
梦断酒醒 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nowdoit 的回复:]

读取主机的配置文件或者硬件信息,有这个文件的吧。
[/Quote]
我知道有文件,但是,有线网卡的标识一定是ethX么?
Athenacle_ 2011-02-25
  • 打赏
  • 举报
回复
proc

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧