现在好多软件注册方法都是通过获得cpu序列号后,进行加密注册的,而且网上都有现成的代码,但是如果客户的电脑是超线程,两个和多个cpu的话,这种注册方法就有问题了,我想请问大家用delphi如何判断电脑中是一个cpu,还是多个cpu,希望大家帮帮忙,最好有代码和资料的连接,谢谢!
解决方案 »
- 如何将指定的数据顺序存入到自己创建的文件中去
- 小妹遇到难题了,求各位神仙的大哥帮忙。100分相送!!!在线等待,急。。。。。。。
- 关于quickreport中qrmemo控件的问题
- 偶是马甲,哪位朋友猜出我是谁,100分相送!
- 愿意用所有的分数来求这个题的答案,关于登陆问题。
- 如何在Delphi7环境下使用命令行调试程序?
- 关于Delphi下如何设计三层应用的问题
- Delphi中如何连接Paradox和Access数据库?
- 请问如何在DELPHI中调用VC写的DLL
- 对 RichEdit 进行图文混排!并将资料存入数据库!请问那位高手会?谢谢
- 文件移动的问题
- 大虾请教:编译错误信息“method identifier expected”,以下是源代码,请大虾出手~
用CPUID指令可以取到CPU的序列号,首先你可以确定你用的CPU是Intel的,而且只有PIII和PIII以上的才支持。
然后执行:
MOV EAX,01H
CPUID
如果返回的EDX中,低18位为1,那么这个CPU就是支持序列号的。
此时EAX就是序列号的高32位。这32位对同一型号的CPU是一样的。
再执行:
MOV EAX,03H
CPUID
此时的EDX:ECX就是序列号的第64位。要想关闭这个ID,可执行下列代码: MOV ECX,119H
RDMSR
OR EAX,00200000H
WRMSR不过,一旦执行上述代码,cpu将一直不能取id,直到下次reset。
begin
GetSystemInfo(SysInfo);
ShowMessage('该机器有:[ '+ inttostr(SysInfo.dwNumberOfProcessors)+' ] 个cpu');
//关于用delphi获取cpu信息的文章请看
http://spaces.msn.com/members/sxfzero/Blog/cns!1pWx-PKHCk_IRK_uSH_QbSWA!146.entry