我知道,这个问题已经多次创建,但它仍然是开放的
问题在于:
我的应用程序需要为计算机生成一些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函数都会返回这个“假”地址,因此,真正的保护很容易被破坏。
非常感谢你们的任何帮助。
感谢。
答案 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。