Jen*_*ens 8 .net c# networking
我试图(或多或少)唯一地识别系统以用于许可目的.我选择了计算机的板载网络适配器的MAC地址来执行此任务,因为我可以确定运行此软件的每个计算机实际上都有一个,这样可以避免在更换硬盘时重新激活.
但是,我遇到了可靠地识别板载网络适配器的麻烦.
使用"Win32_NetworkAdapterConfiguration"ManagementClass,我可以获得大量的MAC地址,包括我喜欢的地址,但是我没有找到区分板载和Windows或病毒扫描程序安装的虚拟适配器的方法.不过,这份清单似乎是有序的.我感兴趣的MAC地址(在我的机器上)列在其他(真实)网络适配器之前.(该列表按接口索引排序.)
使用NetworkInterface.GetAllNetworkInterfaces(),我想我可以通过过滤来识别真正的网络适配器.NetworkInterfaceType == NetworkInterfaceType.Ethernet,但是这个列表似乎是无序的(添加的网卡出现在板载之前).
首先使用第二种方法获取真实网卡的列表,然后按照第一个列表中的外观顺序对它们进行排序,这是一种可靠的方法来识别我正在寻找的MAC地址?第一个列表中的接口索引可以更改吗?我很乐意听到你的想法!
谢谢!
PS:我知道MAC地址可以很容易地改变,但我可以忍受.在插入WLAN棒后,我无法忍受不能使用该软件的客户=)
Jos*_*osh 10
一个相当低技术的解决方案是调用netstat命令并查找具有有效IP地址的适配器的MAC地址.我从未见过netstat命令在一台机器上失败,而我看到WMI多次给出了意想不到的结果.
在任何情况下,我之前都做过类似的激活系统,我使用MAC地址作为识别密钥.最终,它对我和客户来说都比它的价值更加麻烦!我发现更好的平衡和更少的麻烦是让用户在第一次安装软件时"登录".经用户同意,您可以向服务器发送一些标识,例如其MAC地址.
然后,您只需要定期检查激活数据库是否存在重大许可证违规,并根据需要停用密钥.作为一个讨厌产品激活的客户,以及讨厌软件盗版的ISV,我可以看到争论的两个方面,这样就避免了让客户处于一种令人不安的境地,即当某些事情(不可避免地)发生时,必须说服你他们是合法的错误.
仅举几个原因,为什么MAC识别可能不起作用...我在笔记本电脑中使用两个NIC(有线和无线),具体取决于我是在工作还是在家.可以随时禁用其中一个或另一个.另外需要注意的是,我使用的虚拟机非常多,不仅可以获得自己的MAC,还可以指定我想要的任何MAC.然后当然有一天你会发现你的数据库中有100个人,其中MAC为全零.:)这里没有任何保证.
| 归档时间: |
|
| 查看次数: |
5311 次 |
| 最近记录: |