如何 获得 本机 的网卡地址

spmzfz 2010-05-06 08:42:44
如何 获得 本机 真实的网卡地址?


string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
//if((bool)mo["IPEnabled"] == true)
if (mo["IPEnabled"].ToString() == "True")
{
mac = mo["MacAddress"].ToString();
Console.WriteLine(mac);
}
}


注:以上代码能得到本机的MAC ,但它并不一定是真实的,因为它可能是修改后的MAC 。
...全文
478 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayonglong 2010-05-08
  • 打赏
  • 举报
回复
学习了~很多~
swweb 2010-05-08
  • 打赏
  • 举报
回复
帮顶一个
Xiaoyuan245437 2010-05-08
  • 打赏
  • 举报
回复
你可以获得真实的那你就牛了`
你是不是要做内似于投票活动的系统
你想要得到真实的MAC 那你还不如去想得到真实IP
那里会又程序能够检测到它之前的MAC
除非你入侵它的电脑,给他中个病毒放里面
获取他的修改记录 不就可以拉
q601921854 2010-05-08
  • 打赏
  • 举报
回复
帮顶一个
spmzfz 2010-05-08
  • 打赏
  • 举报
回复
UP...

如何 获得 本机 真实的网卡地址?

C# code
string mac = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
//if((bool)mo["IPEnabled"] == true)
if (mo["IPEnabled"].ToString() == "True")
{
mac = mo["MacAddress"].ToString();
Console.WriteLine(mac);
}
}



注:以上代码能得到本机的MAC ,但它并不一定是真实的,因为它可能是修改后的MAC 。
q107770540 2010-05-07
  • 打赏
  • 举报
回复
学习了
zengxianbing 2010-05-07
  • 打赏
  • 举报
回复
DWORD SendARP(
IPAddr DestIP, // 目的IP 地址
IPAddr SrcIP, // 源IP地址,可选参数,把它填成0不会有问题
PULONG pMacAddr, // 返回的物理地址
PULONG PhyAddrLen // 物理地址的长度
);

在C#中实现为:

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

private IntPtr getRemoteMAC(string localIP, string remoteIP)
{
Int32 ldest= inet_addr(remoteIP); //目的地的ip
Int32 lhost= inet_addr(localIP); //本地服务器的ip

try
{
Byte[] macinfo=new Byte[6];
IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr;
int ii=SendARP(ldest,lhost, ref mac, ref len);
return mac;
}
catch(Exception err)
{
}
return IntPtr.Zero;
}

Xiaoyuan245437 2010-05-07
  • 打赏
  • 举报
回复
MAC 是可以修改的` 人家改了 你怎么可以获得其真实的呢`?
最多只可以获取他修改后的MAC `
jianshao810 2010-05-07
  • 打赏
  • 举报
回复
学习了
wangwenzhuang 2010-05-07
  • 打赏
  • 举报
回复
学习了
足球中国 2010-05-07
  • 打赏
  • 举报
回复
以上的方法都是得到虚拟的。在C++区看到要用到汇编。
siegebaoniu 2010-05-07
  • 打赏
  • 举报
回复
独特的问题,定一下。
njw1028 2010-05-07
  • 打赏
  • 举报
回复
持续关注中。。。
Taiyangchen 2010-05-07
  • 打赏
  • 举报
回复
先关注!
fanny110119 2010-05-07
  • 打赏
  • 举报
回复
我来帮你顶!关注
spmzfz 2010-05-07
  • 打赏
  • 举报
回复
唉,为什么我想得到为什么却不能得到为什么?
spmzfz 2010-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 s314324153 的回复:]
读注册表不一定准确,XP下可以改的
[/Quote]

是的,在WIN7 下也可以修改 MAC 的,好像是只有重安装WINDOWS 时载入注册表中的才是真实的MAC。

spmzfz 2010-05-06
  • 打赏
  • 举报
回复
写错了,是可以通过修改注册表修改网卡地址,但这样的话,编程得到的MAC 就
不是真实的MAC 了。
加载更多回复(12)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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