6

我们使用 MAC 地址来识别 PC 是否已获得运行软件的许可。(不要关心 MAC 欺骗;许可证很难获得 :) PC 可能有多个以太网控制器(我们也不担心没有一个的情况;我们已经 5 年没有遇到过这样的机器了),因此可靠地选择稳定的存在问题。

我以为我们已经解决了这个问题,但显然没有。我们使用 Microsoft SDK iphlpapi 模块中的 GetAdaptersInfo,然后遍历列表。我们使用的最后一个适配器大概是主板以太网控制器。唉,我们遇到了一个 Thinkpad,它似乎会根据它是否对接来改变哪个控制器是最后一个。

有没有办法可靠地找到系统上主板以太网控制器的 MAC 地址(如果存在)?而对于那些有2个或更多的主板,选择其中一个稳定的?[如果我知道一组是基于主板的,我可以轻松选择最低地址 MAC]。

4

5 回答 5

3

这是一个泥泞的问题。您如何处理虚拟化?在我的机器上,我有几个以太网适配器,其中只有一个实际上是基于硬件的。而且我的虚拟机都有软件生成的 MAC 地址。而且,如果我真的想要,我可以在不同的计算机上使用相同的 MAC 地址设置多个虚拟机(当然,不在同一个网络上)。

于 2009-08-29T12:12:55.183 回答
2

不 - 没有可靠的方法可以做到这一点。USB 加密狗既便宜又容易——使用它们。

我以前有过使用 MAC 锁定软件的“乐趣”,我只能说不要这样做。

于 2009-08-29T12:09:46.450 回答
2

我认为没有任何可靠的方法可以确定哪个接口是“稳定的”。当然不能不深入研究硬件细节。

但是,如果您以不同的方式处理这个问题。您可以让用户在安装时从列表中选择界面,这可能对用户不太友好。或者只记录系统中的所有 MAC 地址,并在其中一个仍然处于活动状态时进行身份验证。

此外,作为参考,GetAdaptersInfo 返回的顺序可以由用户从网络连接中的高级设置菜单中更改。

于 2009-08-29T12:47:11.953 回答
1

我没有解决方案,但可能还有另一个问题:

有 VPN 软件会创建一个虚拟网卡,并在每次建立 VPN 连接时为该卡随机分配一个新的 mac 地址。

于 2009-08-29T12:14:41.970 回答
1

我也遇到了同样的问题,在这里找到了不同的方法。

Windows 将物理网卡的描述存储在注册表中的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards。IP_ADAPTER_INFO 结构的“描述”成员中也列出了相同的描述。所以我想我可以检查注册表中的这个值是否可以确定MAC地址是否属于物理网卡。

于 2014-09-09T06:25:39.377 回答