最近在使用一个软件,购买了许可。该license绑定了机器的cpuID,然该软件并不能正在运行在windows 8 64bit操作系统上,具体表现为运行3-5mins后就崩溃。于是,我计划使用VMware虚拟机虚拟出相应的硬件以及windows xp 32bit操作系统,将该软件运行到虚拟机上。我原以为VMware虚拟机的CPU配置是基于host的机器配置。但是我发现事实并不是如此。
在cmd shell下执行wmic cpu get ProcessorId命令,可是查看机器的cpuID。查了资料后,通过更改虚拟机配置文件.vmx可是实现任意cpu序列号的指定,而且重启虚拟机后cpu序列号不会恢复原值。具体操作如下:
打开.vmx文件,在最后一行添加如下两行数据:
cpuid.1.eax = "00000000000000110100011010101001"
cpuid.1.edx = "10111111111010111111101111111011"
其中,eax是使用wmic cpu get ProcessorId命令显示的cpuID的二进制值的后32位,edx是前32位。