我开发了一款商业软件,采用系统到系统许可。出于许可目的,我使用各种参数,如 CPU 信息、硬盘信息、BIOS 和其他内容。
问题是由于这些属性的更改导致许可证不断过期。客户不断打电话给我说他们的许可证不起作用。
我已将许可更改为仅使用:
- 处理器 ID
- CPU 名称
- CPU 核心数
- CPU 逻辑处理器数量
- 建筑学
全新安装 Windows 后,这些属性会改变吗?
我不想要服务器端串行密钥验证,因为大多数这些系统都没有互联网连接
答案1
您列出的所有项目实际上都不是唯一的数据。因此,在全新安装 Windows 后它们是否发生变化,对于您的实际需求而言,或多或少都是毫无意义的。
最有可能唯一的是 ProcessorID,但即使它也不能保证是唯一的:https://stackoverflow.com/questions/1101772/win32-processoris-processorid-unique-for-all-computers
由于此信息不是唯一的,因此不适合用于许可证验证。
其他值要么一致,要么可能依赖于驱动程序提供的信息(例如 CPUName)。
您的根本问题在于您未能选择合适的事物作为许可证系统的基础。
答案2
如果你想做好商业许可,我认为这些都不有效:
- 处理器 ID
- CPU 名称
- CPU 核心数
- CPU 逻辑处理器数量
- 建筑学
没有哪一个是独一无二的,但所有一切都可以改变。
您是否允许任何类型的虚拟机?如果允许,那么如果机器突然需要 2 个处理器(物理或逻辑),会发生什么情况?
如果 ESXi / VmWare / VB 意外更改了处理器名称,或者 WMI 出现故障 / 变得异常,该怎么办?
如果机器处于离线状态,我可能会选择为软件设置密钥,尤其是当它导致许多支持呼叫时。否则,您可能会“修复”许可证,并执行您的错误许可证模型认为它正在停止的操作。双重打击。