为了软件许可,我需要使用唯一的计算机id。我决定使用CPU标志。在MSVC上,它们使用函数__cpuid进行检索,在gcc 4.3及更高版本上,使用函数__get_cpuid进行检索。我从这些函数中得到一个整数,它是一个位数组,目的是用作唯一的ID。
我不确定用上述函数检索到的CPU标志是否会更改?用户可以通过编程更改这些标志吗?如果不是通过常规应用程序,也许是通过BIOS?
谢谢。
否,最终用户无法更改它们,因为您列出的每个命令本质上都是英特尔(和英特尔克隆)芯片中提供的实际处理器操作码cpuid
的包装器。
因此,这些信息被"烧录"到硅中。没有用户可以更改它。
以下资源可能会有所帮助:
1) 维基百科关于CPUID
的文章
2) 代码大师文章(2页)关于使用CPUID 调用访问处理器信息
3) 按步进、系列和型号列出许多处理器的表
经过一些测试,我可以确认信息类型1的第二个字节中的标志正在更改。因此,我将只使用Stepping ID、Model、Family和Processor Type值。