首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何可靠地获取计算机板载网卡的MAC地址?

问如何可靠地获取计算机板载网卡的MAC地址?
EN

Stack Overflow用户
提问于 2010-06-21 21:39:08
回答 4查看 5.6K关注 0票数 8

我正在尝试(或多或少)为许可目的唯一地标识一个系统。我已经为这项任务选择了计算机的板载网络适配器的MAC地址,因为我可以确定运行此软件的每台计算机实际上都有一个MAC地址,这样可以避免在更换硬盘驱动器时重新激活。

不过,我在可靠地识别板载网络适配器时遇到了问题。

使用"Win32_NetworkAdapterConfiguration“ManagementClass,我可以得到一大堆MAC地址,包括我喜欢的地址,但我还没有找到一种方法来区分板载的虚拟适配器和Windows或病毒扫描程序安装的虚拟适配器。不过,这个列表似乎是有序的。我感兴趣的MAC地址(在我的机器上)列在其他(真正的)网络适配器之前。(该列表按接口索引排序。)

使用NetworkInterface.GetAllNetworkInterfaces(),我想我可以通过过滤.NetworkInterfaceType == NetworkInterfaceType.Ethernet来识别真正的网络适配器,但这个列表似乎是无序的(添加的网卡出现在板载网卡之前)。

首先使用第二种方法获取真实网卡的列表,然后按照第一个列表中出现的顺序对它们进行排序,这是识别我正在查找的MAC地址的可靠方法吗?第一个列表中的接口索引可以更改吗?我很高兴听到你的想法!

谢谢!

附言:我知道MAC地址很容易更改,但我可以接受。我不能忍受客户在简单地插入WLAN stick =)后无法使用软件

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-21 21:53:17

一种技术含量较低的解决方案是调用netstat command并查找具有有效IP地址的适配器的MAC地址。我从未见过netstat命令在机器上失败,而我见过WMI多次给出意想不到的结果。

在任何情况下,我以前做过类似的激活系统,我使用MAC地址作为识别密钥。最后,无论是对我还是对客户来说,它的麻烦都超过了它的价值!我发现一个更好的平衡和更少的麻烦是让用户在第一次安装软件时“登录”。在用户同意的情况下,您可以向服务器发送一些标识,例如他们的MAC地址。

然后,您只需要定期检查激活数据库中是否有重大许可证违规的证据,并在必要时停用密钥。作为一个讨厌产品激活的客户和一个讨厌软件盗版的ISV,我可以看到争论的双方,这样就避免了让客户在出现问题(不可避免地)时不得不说服你他们是合法的这一令人不快的境地。

只是列举几个为什么MAC识别可能不起作用的原因...我在我的笔记本电脑中使用两个网卡(有线和无线),这取决于我是在工作还是在家里。一个或另一个可以随时禁用。另一件需要注意的事情是,我经常使用虚拟机,它们不仅可以获得自己的MAC,而且我可以指定任何我想要的MAC。当然,有一天你会发现你的数据库中有100个MAC全为0的人。:)这里没有任何保证。

票数 10
EN

Stack Overflow用户

发布于 2010-06-24 14:46:23

除了MAC地址之外,您还应该考虑WMI中的其他一些属性。

Windows产品激活处理此问题的方法是查看属性,如MAC地址(以及有关卡本身的其他识别信息,如PCI供应商信息),以及一些常见设备属性(硬盘控制器、显示适配器),并根据特定阈值确定重新激活的需要。如果这些东西中有太多改变了,那么需要重新激活。

这里有一篇关于这个主题的很棒的文章,应该给你一些思考的食物,关于如何为你自己的许可/激活系统选择好的属性:

http://aumha.org/win5/a/wpa.php

票数 1
EN

Stack Overflow用户

发布于 2010-06-30 11:36:08

如果您的主要需求是唯一标识一台PC,那么我建议您看看this question。被接受的答案谈到了一种解决方案以及使用MAC地址标识符方法的陷阱

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3085118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档