我需要使用唯一的计算机 ID 来获得软件许可。我决定使用 CPU 标志。在 MSVC 上,它们使用函数 __cpuid 进行检索,而在 gcc 版本 4.3 及更高版本中使用函数 __get_cpuid。我从这些函数中得到一个整数,它是一种位数组,目的是用作唯一 ID。
我不确定使用上述函数检索到的 CPU 标志是否会改变?用户可以通过编程方式更改这些标志吗?如果不是通过常规应用程序可能通过 BIOS?
谢谢你。
我需要使用唯一的计算机 ID 来获得软件许可。我决定使用 CPU 标志。在 MSVC 上,它们使用函数 __cpuid 进行检索,而在 gcc 版本 4.3 及更高版本中使用函数 __get_cpuid。我从这些函数中得到一个整数,它是一种位数组,目的是用作唯一 ID。
我不确定使用上述函数检索到的 CPU 标志是否会改变?用户可以通过编程方式更改这些标志吗?如果不是通过常规应用程序可能通过 BIOS?
谢谢你。
不,最终用户无法更改它们,因为您列出的每个命令本质上cpuid
都是英特尔(和英特尔克隆)芯片中提供的实际处理器操作码的包装器。
因此,这些信息被“烧录”到硅片中。没有用户可以更改它。
以下资源可能会有所帮助:
好的,经过一些测试,我可以确认 Info Type 1 的第二个字节的标志正在改变。因此,我将仅使用 Stepping ID、Model、Family 和 Processor Type 值。