我们正在使用MAC地址将PC识别为运行软件的许可。 (不要关心MAC欺骗;很难获得许可证:) PC可能有多个以太网控制器(我们也不用担心 没有一个的情况;我们还没有遇到过这样的机器 在5年内),因此可靠地选择稳定存在问题 之一。
我以为我们已经钉了这个但是显然没有。我们使用GetAdaptersInfo 从Microsoft SDK iphlpapi模块,然后沿着列表向下走。 我们使用最后一个适配器,因为它可能是主板 以太控制器。唉,我们遇到了一个出现的Thinkpad 根据是否对接来更改哪个控制器是最后一个。
有没有办法可靠地找到主板的MAC地址 系统上的以太网控制器,如果存在?对于那些人 有两个或更多的主板,选择其中一个稳定? [如果我知道一套是基于主板的,我可以很容易地选择 最低地址MAC]。
答案 0 :(得分:3)
这是一个泥泞的问题。你如何处理虚拟化?在我的机器上,我有几个以太网适配器,其中只有一个实际上是基于硬件的。我的虚拟机都有软件生成的MAC地址。而且,如果我真的想,我可以在具有相同MAC地址的不同计算机上设置多个VM(当然不在同一网络上)。
答案 1 :(得分:2)
不 - 没有可靠的方法来做到这一点。 USB加密狗便宜且易于使用。
我之前有过使用MAC锁定软件的“乐趣”,我只能说不做。
答案 2 :(得分:2)
我认为没有任何可靠的方法可以确定哪个界面“稳定”。当然不是没有深入了解硬件细节。
但是如果你以不同的方式接近这个怎么办呢。您可以让用户在安装时从列表中选择界面,这可能不是非常用户友好。或者只记录系统中的所有MAC地址,并在其中一个仍处于活动状态时进行身份验证。
另外,作为参考,用户可以从“网络连接”的“高级设置”菜单更改GetAdaptersInfo返回的顺序。
答案 3 :(得分:1)
我没有解决方案,但可能还有另一个问题:
存在创建虚拟网卡的VPN软件,并在每次建立VPN连接时随机为该卡分配新的mac地址。
答案 4 :(得分:1)
我也面临同样的问题,并找到了不同的方法here。
Windows将物理网卡的描述存储在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkCards的注册表中。 IP_ADAPTER_INFO结构的“描述”成员中也列出了相同的描述。所以我想我可以检查注册表中是否有这个值,以确定MAC地址是否属于物理网卡。