开发商业软件的都会遇到一机一码的保护问题,经过两年的测试,我已经找到了C#开发获取稳定的硬件特征码的方法。
电脑的硬件特征有很多,常见的例如:主板、CPU、硬盘、网卡、BIOS等等,很多人使用WMI来获取。但是,单一使用WMI是非常不可靠的,因为WMI可以被禁用,也可以被伪造。
这几年,出于对技术方面的好奇,我测试了十几种硬件特征码的获取,得出了一些测试结果。
一个好的硬件特征判定代码,需要具备以下特点:
1、是否管理员无关
2、是否64位操作系统无关
3、硬件特征稳定不变,也不容易伪造。
4、多次运行不影响软件的性能。
5、可以很方便的从硬件检测软件中读取,方便调试核对。
考虑上述几点,我推荐使用DMI UUID、HDD SerialNumber、 CPU SerialNumber、BIOS SerialNumber这四项中的某一项或两项作为硬件特征的依据。
其中,DMI和BIOS可以使用WMI获取,HDD序列号可以使用API获取,CPU序列号需要Asm代码从底层获取。
下面的软件检测结果:
主板DMI UUID
硬盘序列号
原文:https://www.cnblogs.com/Charltsing/p/HardwareSN.html