如何获取TRUE硬件MAC地址

时间:2010-01-18 21:32:27

标签: c++ licensing mac-address license-key

我知道,这个问题已经多次创建,但它仍然是开放的

问题在于:

我的应用程序需要为计算机生成一些UID,它正在处理。 我需要它来实施真正的保护。

MAC地址是一个很好的候选者,因为它对每个以太网卡都是唯一的。

许多文章都使用GetAdaptersInfo,WMI,NetBIOS或套接字。

以下是其中一个:Three ways to get your MAC address.

他们,岸,返回一个MAC地址,但这个地址可以通过适配器属性设置

Control Panel > Network and Internet > Network and Sharing Center > Change Adatper Settings > right click on adapter > Properties > click "configure" button > go to "Advanced" tab > chose "Network Address" and change it

所有提到的方法都不符合我的需要,因为使用驱动程序设置的MAC地址比真正的硬件MAC地址具有更高的优先级。我所知道的所有Win API函数都会返回这个“假”地址,因此,真正的保护很容易被破坏。

非常感谢你们的任何帮助。

感谢。

3 个答案:

答案 0 :(得分:6)

Windows必须访问MAC地址的唯一方法是询问驱动程序。

这就是驱动程序的用途 - 与硬件通信,以便Windows不必包含任何人可能想出的每个设备的代码。

如果驱动程序告诉Windows MAC地址是什么,那就是MAC地址。

答案 1 :(得分:1)

  

MAC地址是一个很好的候选人,   因为它对每个以太网都是唯一的   卡。

我不敢。首先,我读过有关客户收到具有相同MAC地址的整批机器的报告(显然这会在构建集群时造成痛苦)。

我亲眼看到一台机器在重启时更改其MAC地址。每次。它是运行Windows XP的旧IBM Thinkpad。

我的建议:如果您要生成唯一ID,请远离MAC地址。

答案 2 :(得分:0)

我不认为你提到的“网络地址”是指MAC地址。某些设备允许您“欺骗”MAC地址以用于ISP,但您应该能够使用找到的方法获取真实MAC。